问题描述
||
我在从while循环内部更新shell脚本中变量的值时遇到问题。可以使用以下代码来模拟它:
printf \“ aaa \\ nbbb \\ n \” | \\
同时读x;做
y = $ x
回显\“ INSIDE:$ y \”
做完了
回显\“外部:$ y \”
输出:
内部:aaa
内部:bbb
外:
这里的printf命令只显示两行,而read-read循环逐行读取它,更新某些变量,但是一旦控件退出循环,变量的值就会丢失。
我猜这个问题与以下事实有关:“读取时发出管道”语句使Shell在子进程中执行循环的主体,而子进程无法更新主循环中的Shell变量。
如果我将前两行代码重写为
对于`printf \“ aaa \\ nbbb \\ n \”`中的x;做
输出:
内部:aaa
内部:bbb
外面:bbb
这可能是一种解决方法,但不适用于我的情况,因为实际上我没有\'aaa \'和\'bbb \',而是更复杂的字符串,包括空格等。
任何想法如何解决该问题,即:在循环中逐行读取命令输出并能够更新shell变量?
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)