没有这样的文件或目录(ls)与波浪展开

  • 本文关键字:ls 文件 shell tilde-expansion
  • 更新时间 :
  • 英文 :


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

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

但是我一直得到输出:

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

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

谢谢你的帮助!

这是因为在带引号的字符串中没有波浪展开,而波浪展开在回显行参数替换之前。

展开顺序为:

    <
  1. 波浪号扩张/gh>
  2. 参数扩展
  3. 命令替换
  4. <
  5. 算术扩张/gh>
  6. 字段分割
  7. <
  8. 路径名扩张/gh>
  9. 引用删除

有关详细信息,请参阅POSIX Shell规范中的Word展开。

相关内容

  • 没有找到相关文章

最新更新