如何在shell脚本中获取set变量

时间:2017-04-27 07:36:51

标签: bash shell set

我可以成功在命令行中获取环境变量。

但如果我将命令放在.sh文件中,则运行.sh文件。

什么都没打印出来。有什么原因吗?

root@mydesktop:/tmp$ s1="hello stackoverflow"
root@mydesktop:/tmp$ echo $s1
hello stackoverflow
root@mydesktop:/tmp$/tmp$ set | grep s1
s1='hello stackoverflow'

- >按预期显示效果很好,然后我将这些命令保存到脚本文件test.sh

#!/bin/sh    
echo $s1
echo ${s1}    
hello=$( set | grep s1 )
echo $hello   
echo ${hello}

但是在脚本运行后,我没有得到预期的结果

root@mydesktop:/tmp$ ./test.sh


root@mydesktop:/tmp$ 

有什么想法吗?

更新

好的,发现奇怪的事情:

#set
s1=' balaba '
'
s2='another string'

还有一个' - >它可能是根本原因。

1 个答案:

答案 0 :(得分:1)

默认情况下,声明没有export的变量不会传递给子进程。

 export s1="hello stackoverflow"

如果您没有设置它,只需将其导出:

export s1

./test.sh

---输出

hello stackoverflow
s1='hello stackoverflow'

当然使用引号:

#!/bin/sh
echo "$s1"
hello=$( set | grep s1 )
echo "$hello