28

我正在尝试编写我的 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

4 回答 4

47

较短的呢:

#!/bin/bash

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

?

还有一个初学者版本(相同的逻辑):

#!/bin/bash

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

就像斯科特说的那样,你有一个语法错误(缺少空格)。

解释

于 2013-02-08T00:17:47.013 回答
6

将第一行更改为:

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

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

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

于 2013-02-08T00:21:16.900 回答
4

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

于 2013-02-08T00:17:44.640 回答
4

“A”后面需要一个空格

if [ "$1" -eq "A" ]
于 2013-02-08T00:18:03.187 回答