在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
假如有脚本 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/bash echo 'your are in second file' . first.sh 注意,点号与脚本文件之间记得要有空格。 3.sh命令 #!/bin/bash echo 'your are in second file' sh first.sh 三者输出的结果都是:
4.三者的区别 使用source命令和点号.是等价了,类似于C/C++中的#include预处理指令,都是将指定的脚本内容拷贝至当前的脚本中,由一个Shell进程来执行。使用sh命令来调用另外的脚本和前面两种方法有着本质的区别。使用sh命令则会开启新的Shell进程来执行指定的脚本,这样的话,父进程中的变量在子进程中就无法访问。参考如下代码: #!/bin/bash echo 'your are in first file' echo 'second:' $second second.sh内容,通过上面介绍的三种方法来调用first.sh,看看对second.sh的变量second访问有什么区别! #!/bin/bash second=lvlv echo 'your are in second file' source first . first sh first 程序的输出结果是:
可见,使用sh命令开启一个子进程来调用指定的shell脚本无法访问父进程的变量。我们如何让子进程访问父进程中变量呢?可以使用export命令。 5.export命令设置临时环境变量 我们需要知道Shell中按照变量的作用域和生命周期,Shell变量可分为四大类: 所以,使用export命令我们申明的是临时环境变量,在当前shell会话中,所有的shell实例都可以访问由export命令申明的临时环境变量。因为当前shell会话中的所有shell实例,都是当前shell会话的子进程,所以可以与父进程一同访问环境变量。 second.sh修改如下: #!/bin/bash export second=lvlv echo 'your are in second file' sh first.sh 执行second.sh将输出:
至此,通过export命令设置临时环境变量的方式,使得Shell子进程能够访问父进程中的变量。 6.export命令设置永久环境变量 那么如何定义永久环境变量呢?可以采用如下两种方法: (1) 在 export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib 注意,修改文件后要想马上生效需要执行 (2) 在 export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib 注意:修改文件后要想马上生效需要执行 另外,如想删除已设置的环境变量,可以使用unset(builtin)命令来清除环境变量 ,例如 以上就是Shell脚本调用另一个脚本的三种方法的详细内容,更多关于Shell脚本调用另一个脚本的资料请关注极客世界其它相关文章! |
请发表评论