我正在尝试编写我的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进行比较;有人可以告诉我我错过了什么让这个工作?谢谢
答案 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 == A ]]
已执行,如果为真,则执行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撰稿,否则我建议使用[[
。答案 1 :(得分:5)
将第一行更改为:
if [ "$1" == "A" ]
-eq运算符用于整数。正如其他人提到的那样,空间在']'之前确实很重要。
答案 2 :(得分:4)
尝试在"A"
和]
之间添加空格。
答案 3 :(得分:4)
“A”后需要一个空格
if [ "$1" -eq "A" ]