This topic has been archived. It cannot be replied.
-
工作学习 / 学科技术讨论 / 请教 Linux (RHEL) shell问题:检测是否有某些文件,想用wildcard match,但报告出错。example:当前目录下有a.log b.log两文件:
if [ -f *.log ]
then
echo "log files"
fi
运行结果:line 1: [: b.log: binary operator expected
在Sco unix上运行没问题。不想大规模改动,求助,谢谢!
-archipelago(当时我就火了);
2007-10-16
{202}
(#3994659@0)
-
什么shell?
-akoei(停车**枫林晚);
2007-10-16
(#3996326@0)
-
bash
-archipelago(当时我就火了);
2007-10-17
(#3997487@0)
-
can't remember it exactly, try (( )) or [[ ]] instead of [ ].
-647i(流浪的步行万里);
2007-10-17
(#3997496@0)
-
不行。google上有建议用test 代替[ ] ,不行。
-archipelago(当时我就火了);
2007-10-17
(#3997626@0)
-
在CYGWIN上运行也没问题。放狗看,有人建议 if [-f "*.log"]
-wade(wade);
2007-10-17
(#3997557@0)
-
这是我最初的反应,不过用了""之后*就被非特殊化了,找不到任何文件。
-archipelago(当时我就火了);
2007-10-17
(#3997619@0)
-
把它赋给变量名,加引号再试试。看网上人说LINUX好像是有这问题
-wade(wade);
2007-10-17
(#3997622@0)
-
:) 你的思路和我很象啊。也试过的,找不到。
-archipelago(当时我就火了);
2007-10-17
(#3997632@0)
-
用for loop算了.
-dusk(~小桥流水~);
2007-10-17
(#3997577@0)
-
已经换了。就是纳闷,如果只有一个log文件没问题,多于一个就出错。
-archipelago(当时我就火了);
2007-10-17
(#3997616@0)
-
看样子不同OS不同flavor. 没道理可讲. 刚刚试了一下, solaris 没问题, linux 不行.
-dusk(~小桥流水~);
2007-10-17
(#3997628@0)
-
嗯,google上有人称之为infamous linux problem.
-archipelago(当时我就火了);
2007-10-17
(#3997638@0)
-
hoho :). Havn't hit it myself.
-dusk(~小桥流水~);
2007-10-17
(#3997678@0)
-
check the man bash. the arguments should be 1 file.-e file
True if file exists.
-f file
True if file exists and is a regular file.
-647i(流浪的步行万里);
2007-10-18
{110}
(#3998625@0)