我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何在Shell脚本中调用另一个脚本

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何在Shell脚本中调用另一个脚本

如何在Shell脚本中调用另一个脚本?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

假如有脚本 first.sh:

#!/bin/bash#------------------#@file:first.sh#------------------echo 'your are in first file'

如何在其它Shell脚本中调用first.sh呢?主要有三种方法:source、点号以及sh命令。

1.source

#!/bin/bash#---------------#@file:second.sh#---------------echo 'your are in second file'source first.sh

2.点号.

#!/bin/bashecho 'your are in second file'. first.sh

注意,点号与脚本文件之间记得要有空格。

3.sh命令

#!/bin/bashecho 'your are in second file'sh first.sh

三者输出的结果都是:

your are in second file
your are in first file

4.三者的区别

使用source命令和点号.是等价了,类似于C/C++中的#include预处理指令,都是将指定的脚本内容拷贝至当前的脚本中,由一个Shell进程来执行。使用sh命令来调用另外的脚本和前面两种方法有着本质的区别。使用sh命令则会开启新的Shell进程来执行指定的脚本,这样的话,父进程中的变量在子进程中就无法访问。参考如下代码:
first.sh内容如下,访问了second.sh中的变量second。

#!/bin/bashecho 'your are in first file'echo 'second:' $second

second.sh内容,通过上面介绍的三种方法来调用first.sh,看看对second.sh的变量second访问有什么区别!

#!/bin/bashsecond=lvlvecho 'your are in second file'source first. firstsh first

程序的输出结果是:

your are in second file
your are in first file
second: lvlv
your are in first file
second: lvlv
your are in first file
second:

可见,使用sh命令开启一个子进程来调用指定的shell脚本无法访问父进程的变量。我们如何让子进程访问父进程中变量呢?可以使用export命令。

5.export命令设置临时环境变量

我们需要知道Shell中按照变量的作用域和生命周期,Shell变量可分为四大类:
(1)永久环境变量:需要修改配置文件,变量永久生效。
(2)临时环境变量:使用export命令行声明即可,变量在shell脚本进程结束后仍然有效,但在关闭当前shell会话后失效。
(3)全局变量:在脚本中定义,仅在当前Shell脚本中有效,其他Shell脚本进程不能访本,其作用域从定义的位置开始,到脚本结束或被显示删除的地方为止。注意,全局变量既可以在Shell函数内定义,也可以在shell函数外定义,因为shell函数内定义的变量默认为global,且作用域从“函数被调用时执行变量定义的地方”开始,到脚本结束或被显示删除的地方为止。
(4)局部变量。在shell脚本中函数内显示使用local关键字定义的变量。其作用域局限于函数内。同名local变量会屏蔽global变量。

所以,使用export命令我们申明的是临时环境变量,在当前shell会话中,所有的shell实例都可以访问由export命令申明的临时环境变量。因为当前shell会话中的所有shell实例,都是当前shell会话的子进程,所以可以与父进程一同访问环境变量。

second.sh修改如下:

#!/bin/bashexport second=lvlvecho 'your are in second file'sh first.sh

执行second.sh将输出:

your are in second file
your are in first file
second: lvlv

至此,通过export命令设置临时环境变量的方式,使得Shell子进程能够访问父进程中的变量。

6.export命令设置永久环境变量

那么如何定义永久环境变量呢?可以采用如下两种方法:

(1) 在/etc/profile文件中添加环境变量,对所有用户永久生效。例如通过vim编辑/etc/profile文件,在最后一行添加CLASSPATH变量。

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

注意,修改文件后要想马上生效需要执行source /etc/profile,不然只能在下次重新登录时才生效。

(2) 在~/.bash_profile文件中添加环境变量,只对当前用户永久有效。例如通过vim编辑~/.bash_profile文件中添加环境变量。

export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

注意:修改文件后要想马上生效需要执行source ~/.bash_profile,不然只能在下次重新登录时才生效。

另外,如想删除已设置的环境变量,可以使用unset(builtin)命令来清除环境变量 ,例如$unset CLASSPATH。使用readonly命令可设置只读变量。如果使用了readonly命令的话,变量不可以被修改或清除。

关于如何在Shell脚本中调用另一个脚本问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何在Shell脚本中调用另一个脚本

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何在Shell脚本中调用另一个脚本

如何在Shell脚本中调用另一个脚本?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。假如有脚本 first.sh:#!/bin/bash#------------------
2023-06-09

怎么在Shell脚本中调用另一个脚本

这期内容当中小编将会给大家带来有关怎么在Shell脚本中调用另一个脚本,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。forkfork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调
2023-06-09

Shell脚本中调用另一个Shell脚本的示例分析

小编给大家分享一下Shell脚本中调用另一个Shell脚本的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!主要以下有几种方式:CommandExplana
2023-06-09

Shell脚本调用另一个脚本的三种方法

假如有脚本 first.sh:#!/bin/bash #------------------ #@file:first.sh #------------------ echo 'your are in first file'如何在其它She
2022-06-04

在Shell脚本中调用另一个脚本的三种方式讲解

先来说一下主要以下有几种方式:fork: 如果脚本有执行权限的话,path/to/foo.sh。如果没有,sh path/to/foo.sh。exec: exec path/to/foo.shsource: source path/to/f
2022-06-04

详解Shell脚本中调用另一个Shell脚本的三种方式

主要以下有几种方式:CommandExplanationfork新开一个子 Shell 执行,子 Shell 可以从父 Shell 继承环境变量,但是子 Shell 中的环境变量不会带回给父 She
2022-06-04

Shell脚本中怎么调用和引用另外一个脚本文件

这篇文章主要讲解了“Shell脚本中怎么调用和引用另外一个脚本文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Shell脚本中怎么调用和引用另外一个脚本文件”吧!脚本 first (测试示
2023-06-09

Shell脚本中引用、调用另一个脚本文件的2种方法

在Java,Python中,可以用import的方式来进行脚本或模块之间调用,例如:>>> import math >>> math.sqrt(4) 2.0在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢 方法一:
2022-06-04

Shell脚本中调用、引用、包含另外一个脚本文件的两种方法

脚本 first (测试示例1) #!/bin/bashecho 'your are in first file'问)在当前脚本文件中调用另外一个脚本文件? 方法一: 使用 source 脚本 second (测试示例2)#!/bin/ba
2022-06-04

shell中如何调用python脚本

要在shell中调用Python脚本,可以使用以下命令:```python script.py```其中,`python`是Python解释器的命令,`script.py`是要调用的Python脚本的文件名。如果希望在shell中调用Pyt
2023-10-10

Java 如何实现对 shell 脚本的调用?(java如何调用shell脚本)

在Java开发中,有时需要调用shell脚本以完成一些特定的任务,比如系统管理、文件处理等。下面将详细介绍Java如何调用shell脚本的步骤。一、准备工作确保系统中已经安装了所需的shell环境
Java 如何实现对 shell 脚本的调用?(java如何调用shell脚本)
Javashell2024-12-14

如何在 Linux 中运行一个 Shell 脚本

本篇内容介绍了“如何在 Linux 中运行一个 Shell 脚本”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在 Linux 中有两种运行
2023-06-15

JAVA如何调用Shell脚本

在实际项目中,Java有时候需要调用C写出来的东西,除了JNI以外,我认为一种比较好的方法是JAVA调用Shell。先把C写出来的make成可执行文件,然后再写一个shell脚本执行该可执行文件,最后是JAVA调用该shell脚本。JAVA
2023-05-31

如何在 bash shell 脚本中 echo 一个新行

可以在 echo 命令中使用 -e 选项,这样就可以使用换行符 \\n 在同一输出行中打印新行了,下面我们来详细了解一下。
echo命令Linux2024-12-01

如何在shell中循环调用hive sql 脚本

本篇文章给大家分享的是有关如何在shell中循环调用hive sql 脚本,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。脚本tt.sh的内容如下:#!/bin/bashpara
2023-06-09

Shell中调用、引用、包含另一个脚本文件的三种方法

脚本 first (测试示例1) first#!/bin/bashecho 'your are in first file' 方法一:使用source #!/bin/bashecho 'your are in second file'so
2022-06-04

如何在 Java 中调用 Groovy 脚本?(java怎么调用groovy脚本)

在Java开发中,有时候我们需要调用Groovy脚本以实现更灵活的业务逻辑。Groovy是一种基于Java的动态语言,它具有简洁的语法和丰富的库,能够提高开发效率。下面我们将详细介绍在Java中如何调用Groovy脚本。一、准备工作
如何在 Java 中调用 Groovy 脚本?(java怎么调用groovy脚本)
groovyJava2024-12-16

基础:如何在 Linux 中运行一个 Shell 脚本

在 Linux 中有两种运行 shell 脚本的方法。我将使用示例来进行必要的解释,以便你能理解为什么在运行一个 shell 脚本时要使用给定的特定语法格式。

如何调试Linux shell脚本

shell也有一个真实的调试模式。如果在脚本"strangescript" 中有错误,您可以这样来进行调试: sh -x strangescript   这将执行该脚本并显示所有变量的值。   shell还有一个不需要执行脚本只是检查语法的
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录