如果是Unix文件

时间:2014-02-02 01:26:09

标签: shell unix ksh

我有一个代码

if ["a1 a2" = "a*"]
then
   echo match
else
   echo "a*"
fi

我输入了,返回语句是

A *

main.ksh [3]:[a1 a2:找不到[没有这样的文件或目录]

我想知道为什么会这样,我认为if语句只比较了字符串。它与文件和目录有什么关系?

2 个答案:

答案 0 :(得分:1)

间距问题,你需要做

if [ "a1 a2" = "a*" ]

否则至少"a1将被视为测试运算符的一部分。

同样要进行正则表达式匹配,您需要执行类似

的操作

if [[ "a1 a2" =~ "a"* ]]

但请注意,匹配a后跟字符串中任意位置的0或更多字符,这可能不是您想要的。

答案 1 :(得分:0)

你可能想要这样的东西:

if [ "a1 a2" = "`echo a*`" ]
...

检查工作目录中是否正好有两个文件(a1a2),前缀为a