如何从另一个shell脚本调用shell脚本?
我有两个shell脚本a.sh
和b.sh
。
我怎么能叫b.sh
从shell脚本中a.sh
?
有几种方法可以做到这一点:
使其他脚本可执行,在顶部添加#!/bin/bash
行,并将文件的路径添加到$ PATH环境变量中。 然后,您可以将其称为正常命令。
用source
命令(别名是.
)调用它,如下所示: source /path/to/script
。
使用bash
命令执行它: /bin/bash /path/to/script
。
第一个和第三个方法将脚本作为另一个进程执行,因此其他脚本中的变量和函数将不可访问。
第二种方法在第一个脚本的进程中执行脚本,并从另一个脚本中提取变量和函数,以便它们可以从调用脚本中使用。
在第二种方法中,如果您在第二个脚本中使用exit
,它也会退出第一个脚本。 在第一种和第三种方法中不会发生这种情况。
看一下这个。
#!/bin/bash
echo "This script is about to run another script."
sh ./script.sh
echo "This script has just run another script."
我正在寻找的答案是:
( exec "path/to/script" )
如前所述, exec
在不创建新进程的情况下替换shell。 然而 ,我们可以把它放在一个子shell中,这是通过使用这些parantheses完成的。
编辑:其实( "path/to/script" )
就够了。
上一篇: How to call shell script from another shell script?
下一篇: I can't set cron job