1. 程式人生 > >使用管道導致變數在迴圈體外獲取不到

使用管道導致變數在迴圈體外獲取不到

原指令碼

echo "123456789"|while read line
do
    cat vc |while read field begin end
    do
        b=`echo $line| awk -v begin="$begin" -v end="$end" '{print substr($0,begin,end)}'`
                    echo "value b is:"$b
    done
                    echo "value b is:"$b
done

輸出:

第二個列印並未打印出b的值。是由於使用了|,開啟子程序。

修改後:

echo "123456789"|while read line
do
    while read field begin end
    do
        b=`echo $line| awk -v begin="$begin" -v end="$end" '{print substr($0,begin,end)}'`
                    echo "value b is:"$b
    done < vc
                    echo "value b is:"$b
done

輸出: