我试图将多个 shell 脚本汇总到一个大型 shell 脚本中,例如:
#!/bin/sh
bash script1.sh
bash script2.sh
bash script3.sh
所有脚本共享相同的变量var
和var2
.我想从各个 shell 脚本中删除变量定义,并将其放入大型 shell 脚本中,这样当我更改变量的值时,我只需要做一次。
然而,当我这样做时
#!/bin/sh
var1="1"
var2="2"
bash script1.sh
bash script2.sh
bash script3.sh
引用$var1
和$var2
各个 shell 脚本中都无法识别这些变量。
如果之前有人问过这个问题,我很抱歉,我对一般脚本编写很陌生,不知道要搜索什么。
知道如何循环使用多个变量输入的脚本也很好,例如
var1="1 2 3 4 5"
var2="a b c d e"
for i in $var1;do for j in $var2;do
script1.sh
script2.sh
done;done
答案1
当您在主脚本中运行脚本 1-3 时,它们各自在自己的子 shell 中运行,这就是为什么它们无法识别在其父 shell 中定义的变量的原因。用于export
使变量可用于子 shell:
#!/bin/sh
export var1="1"
export var2="2"
bash script1.sh
bash script2.sh
bash script3.sh
另一种选择(与你的第二个问题相关)是将变量传递给脚本位置参数:
#!/bin/sh
var1="1"
var2="2"
bash script1.sh "$var1" "$var2"
bash script2.sh "$var1" "$var2"
bash script3.sh "$var1" "$var2"
在脚本 1-3 中,这些变量将分别可用为$1
和$2
。
答案2
我试过这个:
设置环境
var1="1"
var2="2"
脚本文件
#!/bin/sh
bash script1.sh
bash script2.sh
bash script3.sh
脚本*.sh
source setup_env
...