日期:2014-05-16  浏览次数:20682 次

nohup执行的shell脚本,全局变量不能传递到脚本中使用吗?
如题:其他文件中定义的全局变量,nohup 123.sh & 执行123.sh时不能引用吗?

------解决方案--------------------
用export
------解决方案--------------------
可以啊,使用source 脚本。

不必export,只要source 脚本就行了,全局变量就被设置到当前shell进程里了,如果希望它成为环境变量以便被之后的shell子进程使用就要export了。
------解决方案--------------------
哦哦,改成这样:

cat mm.lib
#!/usr/bin
BASE_DIR=/usr/sbin/cluster/utilites
LOGFILE=${BASE_DIR}/123.log

cat nn.sh
#!/usr/bin
. mm.lib
export LOGFILE #这里要导出为环境变量才能被123.sh进程使用
nohup 123.sh &

cat 123.sh
#!/usr/bin
cat ${LOGFILE} >456.log
------解决方案--------------------
探讨

哦哦,改成这样:

cat mm.lib
#!/usr/bin
BASE_DIR=/usr/sbin/cluster/utilites
LOGFILE=${BASE_DIR}/123.log

cat nn.sh
#!/usr/bin
. mm.lib
export LOGFILE #这里要导出为环境变量才能被123.sh进程使用
nohup 123.sh &

……

------解决方案--------------------
要用export, 引用别的脚本用 source $(dirname $0)/xxx.sh