我正在阅读Wrox,开始Linux编程。 但我对shell变量有疑问。
这是一个名为test.sh的shell脚本:
#! /bin/bash
read test
echo $test
exit 0
然后我chmod脚本:
$ chmod +x test.sh
$ ./test,sh
当我输入“ok”时,它会回显“ok”。
但是当我返回shell界面时,我输入了:
$ echo $test
它没有返回......
我不知道为什么$ test不像脚本那样返回“ok”... 这本书没有提到它......
提前致谢:)
答案 0 :(得分:3)
变量仅存在于创建它们的过程中(如果导出它们,也存在于子进程中)。运行脚本会在脚本结束后创建一个新进程,其所有变量都将丢失。
您可以通过“获取”来运行脚本而无需启动新流程:
. ./test.sh
然后你应该移除exit
,否则它会退出当前的shell。
答案 1 :(得分:2)
这是因为他们是不同的过程, “包含”其他脚本运行的来源
. test.sh
test.sh应该没有退出:
#! /bin/bash
read test
echo $test
答案 2 :(得分:1)
处理地点
环境变量的值是本地的,这意味着它们是 特定于它们设置的运行过程。这个 意味着,如果我们打开两个终端窗口(这意味着我们有两个 单独的bash进程运行),并更改环境的值 其中一个窗口中的变量,该变化将不会被看到 shell在另一个窗口或当前的任何其他程序 桌面。
为了您的理解:https://help.ubuntu.com/community/EnvironmentVariables