在 Bash 变量赋值的右侧引用时,波浪号不展开



我做了一个目录~/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"

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

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

相关内容

  • 没有找到相关文章

最新更新