【发布时间】:2021-06-03 16:17:00
【问题描述】:
我正在尝试创建一个在 CentOS 7 下运行多个脚本的 shell 脚本。每个脚本都以 #!/bin/bash 开头。每个脚本都经过测试,可以毫无问题地作为独立的 shell 脚本运行。
scripts_all.sh 的内容
#!/bin/bash
set -x
sudo yum install g++ make binutils cmake openssl-devel boost-devel zlib-devel
sh script_1.sh # executes all the contents of script_1.sh
sh script_2.sh # does not executed any of the command in script_2.sh.
sh script_3.sh
sh script_4.sh
script_1.sh
#!/bin/bash
sudo yum install centos-release-scl
sudo yum install devtoolset-9-gcc*
scl enable devtoolset-9 bash
which gcc
gcc --version
script_2.sh
#!/bin/bash
sudo yum install centos-release-scl-rh
sudo yum-config-manager --enable centos-release-scl-rh
sudo yum install devtoolset-9
scl enable devtoolset-9 bash
看来./scripts_all.sh 将成功执行set -x、sudo yum、sh script_1.sh,但在sh script_2.sh 处停止。值得注意的是,我可以运行 sh script_2.sh 而不会出现独立于 scripts_all.sh 的问题。我不知道为什么其余的脚本不会运行。
./scripts_all.sh 打印sh script_1.sh 的行及其执行,但它从不打印sh script_2.sh 的行。
有人可以帮忙吗?
【问题讨论】:
-
如果它们是 bash 脚本,您应该使用
bash script_N.sh。或者,如果它们以#!开头,只需使用./script_N.sh -
set -x是否显示script_1.sh行? -
如果没有,说明
sudo yum ...还没有完成。 -
为什么要打印这些行?该脚本是否也以
set -x开头?其他脚本有吗? -
“停在”是什么意思?它会永远挂起,还是suddenly exit?