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

时间:2013-02-08 00:16:08

标签: linux bash shell terminal sh

我正在尝试编写我的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 
无论我输入什么,

都会返回

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

我正在尝试用一个或几个字母检查某些内容并将其与字母A进行比较;有人可以告诉我我错过了什么让这个工作?谢谢

4 个答案:

答案 0 :(得分:26)

短篇小说:

#!/bin/bash

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

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

#!/bin/bash

if [[ $1 == A ]]; then
    echo "A"
else
    echo "not A"
fi

就像Scott说的那样,你有语法错误(缺少空格)。

解释

答案 1 :(得分:5)

将第一行更改为:

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

-eq运算符用于整数。正如其他人提到的那样,空间在']'之前确实很重要。

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

答案 2 :(得分:4)

尝试在"A"]之间添加空格。

答案 3 :(得分:4)

“A”后需要一个空格

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