我做了一个目录~/test_myDir
然后我运行以下 bash 脚本:
x="myDir"
dirName="~/test_$x"
cd $dirName
echo "hey" > test.txt
我收到以下错误:
test.sh: line 5: cd: ~/test_myDir: No such file or directory
然后,我从第二个作业中删除引号:
x="myDir"
dirName=~/test_$x
cd $dirName
echo "hey" > test.txt
脚本运行时没有错误。
这是怎么回事? 我在一个更大、更复杂的脚本中遇到了这个问题,我把它缩小到我在包含另一个变量的变量赋值中使用引号。
不过,从错误消息来看,完整路径似乎在"cd"调用中被正确扩展。
引号可防止~
扩展。将~
替换为$HOME
或使用dirName=~/"test_$x"
。
从手册对波浪号扩展的解释中:
检查每个变量赋值是否紧跟在 : 或第一个 = 之后的不带引号的波浪号前缀。 在这些情况下,波浪号扩展 还表演了。