unix shell脚本中的cat命令

时间:2012-05-15 20:44:50

标签: bash shell unix cat

我有两行代码

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。

2 个答案:

答案 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