我想写我的shell脚本thing.sh
,使得在使其成为一个可执行文件,并与单个字母``A”像这样运行它:
$ ./thing.sh A
我得到的输出
A
如果参数1不是,我想要的输出
Not A
这是我到目前为止的代码:
#!/bin/bash
if [ "$1" -eq "A"]
then echo "A"
else echo "Not A"
fi
返回,不管是什么我进入,
./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 ]]
被执行,然后如果它的真实, echo "A"
被执行,如果是假的, 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