没有这样的文件或目录(ls)与代字号扩展一起使用

时间:2013-05-31 17:27:14

标签: shell tilde-expansion

我正在编写一个简单的bash脚本,并希望显示特定目录中的所有项目。我尝试了以下操作:

desktop="~/Desktop/testr/"
echo $desktop
echo `ls $desktop`

但是我一直得到输出:

~/Desktop/testr/
ls: ~/Desktop/testr/: No such file or directory

但是当我从终端运行ls时,我可以看到这些项目。我怀疑问题是~没有扩大,但我认为双引号可以解决这个问题。

感谢您的帮助!

1 个答案:

答案 0 :(得分:10)

这是因为在引用的字符串中没有波形扩展,并且波形扩展在回声线中的参数替换之前出现。

扩展的顺序是:

  1. Tilde扩张
  2. 参数扩展
  3. 命令替换
  4. 算术扩展
  5. 字段拆分
  6. 路径名扩展
  7. 引用删除
  8. 有关血腥的详细信息,请参阅POSIX Shell Specification on Word Expansions