3

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

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

但是我不断得到输出:

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

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

谢谢你的帮助!

4

1 回答 1

10

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

展开顺序为:

  1. 波浪号扩展
  2. 参数扩展
  3. 命令替换
  4. 算术展开
  5. 字段拆分
  6. 路径名扩展
  7. 报价移除

有关血腥细节,请参阅POSIX Shell Specification on Word Expansions

于 2013-05-31T17:28:41.563 回答