我正在从主使用源执行 2 个 shell 脚本。
主程序:
#/bin/sh
a=1
b=2
c=3
gnome-terminal -x sh -c ". ./test1.sh|less" (note the source ".")
gnome-terminal -x sh -c ". ./test2.sh|less"
...
...
测试1.sh:
#!/bin/sh
echo "a="$a #doesn't print anything
我可以单独执行以下 2 项,但是当我合并时,我无法访问其他文件中的主变量
gnome-terminal -x sh -c "test1.sh|less"
#能够在单独的终端中执行. ./test1.sh
#能够在 test1.sh 中访问来自 main.sh 的变量
答案1
您必须export
在子 shell 中引用任何需要的变量。
在您的示例中放入以下语句:
export a b c
在调用之前的某处gnome-terminal
。或者,使用 export 语句定义变量:
export a=1 b=2 c=3
我假设您test1.sh
尝试使用 source 来解决此export
要求(因为源文件由源 shell 解释,而不是在子 shell 中执行)。您忽略的是,打开一个gnome-terminal
将启动一个新的壳。