在我Korn shell的日子裏,我能做到以下幾點:製作管道通猛砸邏輯運行在當前shell
#!/bin/ksh
(
echo a=1
echo b=2
) |
while read line
do
name=${line%%=*}
val=${line#*=}
eval "$name=$val"
eval "echo $name=\$$name"
done
echo a=$a
echo b=$b
輸出:
a=1
b=2
a=1
b=2
含義while循環在前臺外殼運行。
但是,當你運行在bash,你會得到:
a=1
b=2
a=
b=
意思是說在一個子shell中運行。
我知道其他機制,以獲得我想要的具體用法,但是,有沒有辦法使bash在前臺運行它像ksh?
查看[BashFAQ#24](http://mywiki.wooledge.org/BashFAQ/024),其中詳細介紹了這一點。 –
...這個特定問題的答案也包含在稍微更一般的問題的答案中http://stackoverflow.com/questions/7313491/bash-while-read-resetting-variable-values-using-讀取內置在管道中(旁白:mklement0的答案是恕我直言,那裏是最好的)。 –