我有两行代码
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 shell。答案 0 :(得分:6)
以下命令会打印什么?
cat -v <<< `ls *.properties`
我想问题是,ls
是一个奇怪的别名,例如
ls='ls --color'
编辑:之前我见过这个。别名应为:alias ls='ls --color=auto'
答案 1 :(得分:0)
很可能有一个匹配*.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