有时候shell中某些变量总是不能被改变是什么原因

答:在子shell执行,那么变量的值总是不能如愿以偿的改变,示例如下:

#!/bin/sh   
var="jello"
cat "jello.txt" | while read line
do
  var=${line}
done
echo "var=${var}"

看见示例中的管道了吗!这是个陷阱,会导致while在子shell 中执行,以至于var的值并没有被改变

解决方法:

#!/bin/sh
while read line
do
  var=${line}
done < "jello.txt"

echo "var=${var}"

  

原文地址:https://www.cnblogs.com/dakewei/p/10438999.html