首页 > 代码库 > bash变量作用域问题
bash变量作用域问题
queue_exist=0
ps -ef | grep ${PROCESS_PARM} | grep java | awk ‘{print $2}‘ | while read pid
do
queue_exist=1
break;
done
queue_exist=1 这句就是不起作用,出了循环之后还是等于0。
印象中bash变量都是全局变量。
查了下,原来在bash shell中管道是新起了一个进程的,相当于 queue_exist=1这句是定义在subshell中了,subshell中的变量是local变量,对原来的shell不起作用,因而赋值不成功。
没找到好的办法,后来就在循环体内创建隐藏文件代替变量来标识这个状态了,最后再把隐藏文件删除。
bash变量作用域问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。