Linux 为什么这句话总是正确的?
我想检查输入参数是否以“.c”(“*.c”)结尾。发布代码中的条件始终为true, 因为您在Linux 为什么这句话总是正确的?,linux,syntax,Linux,Syntax,我想检查输入参数是否以“.c”(“*.c”)结尾。发布代码中的条件始终为true, 因为您在[…]中拥有的“$x”=“*.c”被shell解释为单个非空字符串值,而非空字符串值在Bash中是真实的 但为什么这是一个“单个非空字符串值”?那=符号呢 要将其视为内置的[…]的条件运算符,必须在=符号周围放置空格。否则shell不会将其识别为运算符 也就是说,这样写(同时修复其他语法错误): 这将使条件不总是真实的,但它仍然不能满足您的要求。要检查变量是否以.c结尾,您需要使用[…]内置代码以不同的方
[…]
中拥有的“$x”=“*.c”
被shell解释为单个非空字符串值,而非空字符串值在Bash中是真实的
但为什么这是一个“单个非空字符串值”?那=
符号呢
要将其视为内置的[…]
的条件运算符,必须在=
符号周围放置空格。否则shell不会将其识别为运算符
也就是说,这样写(同时修复其他语法错误):
这将使条件不总是真实的,但它仍然不能满足您的要求。要检查变量是否以.c结尾,您需要使用[…]
内置代码以不同的方式编写它:
if [ "$x" = "*.c" ]; then echo "$x"; else echo "not .c"; fi
a) 没有代码为b)的图片,即使有,我们也不欣赏图片中的代码。请键入否,您上载了一个4kB的图像,其中的文本可以用40字节的可解析、可编辑和可搜索文本写入,因为您分配了:
=
,而不进行比较:=
。尝试将代码中的=
替换为=
==不工作,我刚刚尝试过,对不起,pic我在添加代码时遇到问题,
if [ "$x" = "*.c" ]; then echo "$x"; else echo "not .c"; fi
if [[ "$x" == *.c ]]; then echo "$x"; else echo "not .c"; fi