我正在编写一个简单的bash脚本,并希望显示特定目录中的所有项目。我尝试了以下操作:
desktop="~/Desktop/testr/"
echo $desktop
echo `ls $desktop`
但是我一直得到输出:
~/Desktop/testr/
ls: ~/Desktop/testr/: No such file or directory
但是当我从终端运行ls时,我可以看到这些项目。我怀疑问题是~
没有得到扩展,但我认为双引号会解决这个问题。
谢谢你的帮助!
这是因为在带引号的字符串中没有波浪展开,而波浪展开在回显行参数替换之前。
展开顺序为:
- <
- 波浪号扩张/gh>
- 参数扩展
- 命令替换 <
- 算术扩张/gh>
- 字段分割 <
- 路径名扩张/gh>
- 引用删除
有关详细信息,请参阅POSIX Shell规范中的Word展开。