在bash脚本中使用条件来检查string参数

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

 $ ./thing.sh A 

我得到输出

 A 

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

 Not A 

这是我的代码到目前为止:

 #!/bin/bash if [ "$1" -eq "A"] then echo "A" else echo "Not A" fi 

无论我input什么,

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

我正在尝试我希望检查一个或几个字母的东西,并将其与字母A进行比较; 有人能告诉我什么,我错过了这个工作? 谢谢

Solutions Collecting From Web of "在bash脚本中使用条件来检查string参数"

那短一点呢:

 #!/bin/bash [[ $1 == A ]] && echo "A" || echo "not A" 

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

 #!/bin/bash if [[ $1 == A ]]; then echo "A" else echo "not A" fi 

就像斯科特所说,你有一个语法错误(缺少空间)。

说明

将第一行更改为:

 if [ "$1" == "A" ] 

-eq运算符是整数。 而正如其他人所提到的那样,这个空间在'''之前确实很重要。

看到这里: http : //tldp.org/LDP/abs/html/comparison-ops.html

“A”之后需要一个空格

 if [ "$1" -eq "A" ] 

尝试在"A"]之间放置一个空格。