当在 bash 脚本中执行以下两行代码时,“ls”会抱怨文件不存在:
dirs=/content/{dev01,dev02}
ls -l $dirs
当我使用 -x 选项运行脚本时,它似乎在单引号内传递变量(这将防止通配):
+ dirs=/content/{dev01,dev01}
+ ls -l '/content/{dev01,dev01}'
ls: /content/{dev01,dev01}: No such file or directory
如果我从交互式 shell 中执行“ls”命令(不带引号),它将返回两个目录。
我一直在阅读 Bash 参考手册(v 3.2),并且看不到任何不发生文件名通配的原因(我没有将 -f 传递给 shell),或者我可以设置的任何内容以确保发生通配符。
Here https://web.archive.org/web/20090403131119/http://www.mydatabasesupport.com/forums/shell/393265-bash-glob-expansion.html是关于您正在尝试做的事情的精彩讨论。
简短的答案是你想要一个数组:
dirs=(/content/{dev01,dev01})
但我认为你对结果所做的事情可能会比你的目标更加复杂。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)