Linux 在bash脚本中使用条件检查字符串参数

Linux 在bash脚本中使用条件检查字符串参数,linux,bash,shell,terminal,sh,Linux,Bash,Shell,Terminal,Sh,我正在尝试编写shell脚本thing.sh,以便在使其成为可执行文件并使用单个字母“A”运行时,如下所示: $ ./thing.sh A 我得到输出 A Not A 如果参数1不是A,我想要输出 A Not A 以下是我目前的代码: #!/bin/bash if [ "$1" -eq "A"] then echo "A" else echo "Not A" fi 不管我进了什么,它都会回来 ./thing.sh: line 3: [:missing `]' Not A

我正在尝试编写shell脚本
thing.sh
,以便在使其成为可执行文件并使用单个字母“A”运行时,如下所示:

$ ./thing.sh A
我得到输出

A 
Not A 
如果参数1不是A,我想要输出

A 
Not A 
以下是我目前的代码:

#!/bin/bash

if [ "$1" -eq "A"]
then echo "A"
else echo "Not A"
fi 
不管我进了什么,它都会回来

./thing.sh: line 3: [:missing `]'
Not A

我正在尝试我希望用一个或多个字母来检查某个东西,并将其与字母A进行比较;有人能告诉我我缺少了什么才能使其正常工作吗?谢谢你

尝试在
“A”
]之间留出一个空格
短一点的怎么样:

#!/bin/bash

[[ $1 == A ]] && echo "A" || echo "not A"
?

和初学者版本(相同的逻辑):

正如Scott所说,您有一个语法错误(缺少空格)

解释
  • 我在这里使用布尔逻辑。
    [[$1==A]]
    执行,如果为真,则执行
    echo“A”
    ,如果为假,则执行
    echo“not A”
    ,请参阅
  • [[
    是一个bash关键字,与
    [
    命令类似(但功能更强大)。请参阅,除非您是为POSIX sh编写,否则我建议您使用
    [
您需要在“a”后面加一个空格


将第一行更改为:

if [ "$1" == "A" ]
-eq运算符用于整数。正如其他人提到的,在“]'之前的空格确实很重要


参见此处:

完美,你是一个救生员如果你认为答案有用,你可以“投票”它。你也可以通过点击
复选标记的大纲来“接受”答复(将为绿色),这样,搜索stackechange网站的人就会知道这个问题的答案很好。这就是stackechange网站的工作原理,谢谢;)当然,斯科特。也添加了长版本。