好奇的问题:对于\'\'vs. while-read循环和shell脚本中变量的可见性

问题描述

|| 我在从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 (将#修改为@)