nohup执行的shell脚本,全局变量不能传递到脚本中使用吗?

wangshiruyan1989 2012-05-17 11:24:17
如题:其他文件中定义的全局变量,nohup 123.sh & 执行123.sh时不能引用吗?
...全文
971 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangshiruyan1989 2012-06-07
  • 打赏
  • 举报
回复
不能用export,会导致环境变量冲突。已经解决了,方法比较笨,通awk将需要的内容输入到一个临时文件中,在nohup的脚本中包含这个文件。
delphiwcdj 2012-05-20
  • 打赏
  • 举报
回复
要用export, 引用别的脚本用 source $(dirname $0)/xxx.sh
回南山种豆 2012-05-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

哦哦,改成这样:

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 &

……
[/Quote]
--------------------------------------------
export LOGFILE #这里要导出为环境变量才能被123.sh进程使用
是的你想在子进程中使用父进程的变量共享,必须要export的。
qq120848369 2012-05-19
  • 打赏
  • 举报
回复
哦哦,改成这样:

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
wangshiruyan1989 2012-05-19
  • 打赏
  • 举报
回复
cat mm.lib
#!/usr/bin
BASE_DIR=/usr/sbin/cluster/utilites
LOGFILE=${BASE_DIR}/123.log

cat nn.sh
#!/usr/bin
. mm.lib
nohup 123.sh &

cat 123.sh
#!/usr/bin
cat ${LOGFILE} >456.log


nohup执行nn.sh脚本,${LOGFILE}是无法用的,怎么样才能引用LOGFILE变量呢?

qq120848369 2012-05-18
  • 打赏
  • 举报
回复
可以啊,使用source 脚本。

不必export,只要source 脚本就行了,全局变量就被设置到当前shell进程里了,如果希望它成为环境变量以便被之后的shell子进程使用就要export了。
mymtom 2012-05-18
  • 打赏
  • 举报
回复
用export

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧