我有两行代码
1)使用以下代码:
for i in `ls *.properties`; do cat $i; done
我得到错误:
cat: file_name.properties: No such file or directory.
2)另一方面:
for i in *.properties; do cat $i; done
工作正常!
我以为两者都是一样的。有人可以帮我理解两者之间的区别吗?使用 bash 外壳。
以下命令打印什么?
cat -v <<< `ls *.properties`
我想问题是,这ls
是一个奇怪的别名,例如
ls='ls --color'
编辑:我以前见过这个。别名应该是:alias ls='ls --color=auto'
很可能有一个匹配的目录*.properties
。然后ls
将输出该目录下的文件,不带目录名。然后cat
将找不到给定的文件名。
所以请检查,file_name.properties
是在实际目录中还是在某个子目录中。
编辑
要重现该问题,您可以尝试以下操作:
# cd /tmp
# mkdir foo.properties
# touch foo.properties/file_name.properties
# for i in `ls *.properties`; do cat $i; done
cat: file_name.properties: No such file or directory