我面临着一个奇怪的问题.
我有一个使用solaris 11的虚拟机,并尝试编写一些bash脚本.
我有一个使用solaris 11的虚拟机,并尝试编写一些bash脚本.
如果,在shell上,我输入:
export TEST=aaa
然后运行:
set
我正确地看到一个名为TEST的新环境变量,其值为aaa.
但是,如果我在脚本中基本上做同样的事情.当脚本终止时,我没有看到变量集.
举一个具体的例子,如果在test.sh文件中,我有:
#!/usr/bin/bash echo 1: $TEST #variable not defined yet,expect to print only 1: echo 2: $USER TEST=sss echo 3: $TEST export TEST echo 4: $TEST
它打印:
1: 2: daniele 3: sss 4: sss
并且在执行之后,未在shell中设置TEST.
我错过了什么吗?
我试过两个导出TEST = sss和单独的变量set / export没有区别.
export – 使变量可用于子进程,但不能用于父进程.
source – 在shell中运行脚本而不创建子进程
对于exalmpe,可以通过写入文件来实现持久变量
#!/usr/bin/bash echo 1: $TEST #variable not defined yet,expect to print only 1: CONFIGFILE=~/test-persistent.vars if [ -r ${CONFIGFILE} ]; then # Read the configfile if it's existing and readable source ${CONFIGFILE} fi echo 2: $TEST echo 3: $USER TEST=sss echo 4: $TEST echo TEST="$TEST"> ${CONFIGFILE} echo 5: $TEST
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。