有时候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}"