我基本上是在寻找一种方法来实现这个目标
list=$(command)
while read -r arg
do
...
done <<< "$list"
使用sh intead bash。由于最后一行,代码不会运行:
syntax error: unexpected redirection
任何修复?
编辑:我需要编辑变量并在循环外访问它们,因此使用|
是不可接受的(因为它创建了一个具有独立范围的子shell)
编辑2:此问题与Why does my Bash counter reset after while loop不相似,因为我没有使用|
(正如我在上一次编辑中所注意到的)。我要求另一种方法来实现它。 (链接问题的答案仅解释了问题发生的原因,但没有提供任何解决方案使用sh(无bash)。
答案 0 :(得分:2)
在POSIX sh
中没有纯粹的语法方法。您需要使用临时文件来输出命令,或使用命名管道。
mkfifo output
command > output &
while read -r arg; do
...
done < output
rm output
答案 1 :(得分:0)
你有什么理由不能这样做吗?应该工作..除非你在循环中分配你希望在完成后可见的任何变量。
command |
while read -r arg
do
...
done