if[ "$x"="*.c" ]
then
echo $x
else
echo "not .c"
我想检查输入参数是否以" .c"结尾? (" * C&#34)。
答案 0 :(得分:0)
发布代码中的条件总是如此,
因为"$x"="*.c"
中的[ ... ]
被shell解释为单个非空字符串值,非空字符串值 truthy 在Bash。
但为什么这是一个"单个非空字符串值"?那么=
标志呢?
要被视为[ ... ]
内置函数的条件运算符,您必须在=
符号周围添加空格。否则,shell不会将其识别为运营商。
也就是说,这样写(修复其他语法错误):
if [ "$x" = "*.c" ]; then echo "$x"; else echo "not .c"; fi
这将使条件不总是正确的,但它仍然不会做你想要的。要检查变量是否以.c结尾,您需要使用[[ ... ]]
内置函数以不同的方式编写它:
if [[ "$x" == *.c ]]; then echo "$x"; else echo "not .c"; fi