x='1,2,3,4'
IFS=$','
for entry in x
do
echo $x
unset $x
echo $x
done
echo $x
输出结果是
1
2
3
4
但for循环里面不是已经把x删除了吗那为什么还能打出1,2,3,4呢?如果x是局部变量那最后打出来的x还是空的。为什么呢?谢谢!
首先unset 变量,而不是unset $变量。
其次你在unset前echo了一次,所以是会打印出来的。之后的两次就没有了。参考下面的代码
#!/bin/bash
x='1,2,3,4'
IFS=$','
for entry in x
do
echo 'a'$x
unset x
echo 'b'$x
done
echo 'c'$x
楼主理解下$的作用,$它是取变量的值,而楼主unset $x 则是分别取消了1,2,3,4这些数,而非变量x,在不同的bash解释器中,对于unset $x ,有些shell是会直接报错的,而有些不会,这是bash解释器的区别问题,若楼主想取消x的值,则直接unset x 就行了,而非unset $x,如下:
x='1,2,3,4'
IFS=$','
for entry in x
do
echo $x
unset x # unset $x -> unset x
echo $x
done
echo $x