使用管道导致变量在循环体外获取不到

原脚本

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

输出:


版权声明:本文为zheng2263原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。