linux – Bash:如何在循环中检索背景中的变量值
发布时间:2020-12-14 01:29:53 所属栏目:Linux 来源:网络整理
导读:作为示例,请考虑以下bash脚本.有两个循环,第一个在后台执行,第二个循环打印myvar值: #!/bin/bashmyvar=AAAwhile true;do sleep 3 myvar=BBB sleep 3 myvar=CCCdone while true;do echo "${myvar}" sleep 1done 我实际获得的输出: AAAAAAAAA... 我希望获得
作为示例,请考虑以下bash脚本.有两个循环,第一个在后台执行,第二个循环打印myvar值:
#!/bin/bash myvar=AAA while true; do sleep 3 myvar=BBB sleep 3 myvar=CCC done & while true; do echo "${myvar}" sleep 1 done 我实际获得的输出: AAA AAA AAA ... 我希望获得的输出: AAA BBB CCC BBB CCC ... 解决方法
这是由于&为第一个while循环创建一个新的子shell.
我很确定你需要使用某种IPC来解决这个问题.使用管道或命名管道来实现生产者/消费者设置是合理的. 一个粗略的例子: #!/bin/bash myvar=AAA while true; do sleep 3 myvar_piped=BBB echo $myvar_piped # this goes to the pipe. sleep 1 done | # this connects the two loops. while true; do # if we consumed something (timeout=1) print it,else print our own variable. if read -t 1 myvar_piped # then echo "${myvar_piped}" else echo "${myvar}" fi done 输出: AAA AAA AAA BBB AAA AAA AAA AAA BBB (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |