我正在尝试编写我的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进行比较; 有人能告诉我什么,我错过了这个工作? 谢谢
那短一点呢:
#!/bin/bash [[ $1 == A ]] && echo "A" || echo "not A"
?
和初学者版本(相同的逻辑):
#!/bin/bash if [[ $1 == A ]]; then echo "A" else echo "not A" fi
就像斯科特所说,你有一个语法错误(缺少空间)。
[[ $1 == A ]]
,如果它的值为true,则执行echo "A"
,如果为false,则执行echo "not A"
,参见http://mywiki.wooledge.org/BashGuide/ TestsAndConditionals [[
是一个bash关键字类似于(但比它更强大) [
命令。 请参阅http://mywiki.wooledge.org/BashFAQ/031和http://mywiki.wooledge.org/BashGuide/TestsAndConditionals除非您正在为POSIX sh编写,否则我建议[[
。 将第一行更改为:
if [ "$1" == "A" ]
-eq运算符是整数。 而正如其他人所提到的那样,这个空间在'''之前确实很重要。
看到这里: http : //tldp.org/LDP/abs/html/comparison-ops.html
“A”之后需要一个空格
if [ "$1" -eq "A" ]
尝试在"A"
和]
之间放置一个空格。