在Bash变量赋值的右侧引用时,Tilde未展开

时间:2018-04-15 20:15:34

标签: bash variable-assignment double-quotes tilde-expansion

我已经创建了一个目录〜/ test_myDir

然后我运行以下bash脚本:

batch_size

我收到以下错误:

x="myDir"

dirName="~/test_$x"

cd $dirName
echo "hey" > test.txt

然后我从第二个作业中删除了引号:

test.sh: line 5: cd: ~/test_myDir: No such file or directory

脚本运行时没有错误。

这里发生了什么?我在一个更大,更复杂的脚本中遇到了这个问题,我把它缩小到我在包含另一个变量的变量赋值中使用引号。

仍然,从错误消息中,看起来在“cd”调用中正确扩展了完整路径。

1 个答案:

答案 0 :(得分:1)

引号可防止~的扩展。将~替换为$HOME或使用dirName=~/"test_$x"

从手册对波浪扩展的解释:

  

检查每个变量赋值是否紧跟在:或第一个=后面的未加引号波浪号前缀。在这些情况下,波浪扩展是          也表演了。