我面临着一个奇怪的问题.
我有一个使用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