3

我有两行代码

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 外壳。

4

2 回答 2

6

以下命令打印什么?

cat -v <<< `ls *.properties`

我想问题是,这ls是一个奇怪的别名,例如

ls='ls --color'

编辑:我以前见过这个。别名应该是:alias ls='ls --color=auto'

于 2012-05-15T20:54:13.617 回答
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
于 2012-05-15T20:56:17.987 回答