Linux 在bash脚本中使用条件检查字符串参数
我正在尝试编写shell脚本Linux 在bash脚本中使用条件检查字符串参数,linux,bash,shell,terminal,sh,Linux,Bash,Shell,Terminal,Sh,我正在尝试编写shell脚本thing.sh,以便在使其成为可执行文件并使用单个字母“A”运行时,如下所示: $ ./thing.sh A 我得到输出 A Not A 如果参数1不是A,我想要输出 A Not A 以下是我目前的代码: #!/bin/bash if [ "$1" -eq "A"] then echo "A" else echo "Not A" fi 不管我进了什么,它都会回来 ./thing.sh: line 3: [:missing `]' Not A
thing.sh
,以便在使其成为可执行文件并使用单个字母“A”运行时,如下所示:
$ ./thing.sh A
我得到输出
A
Not A
如果参数1不是A,我想要输出
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进行比较;有人能告诉我我缺少了什么才能使其正常工作吗?谢谢你尝试在
“A”
和]之间留出一个空格
短一点的怎么样:
#!/bin/bash
[[ $1 == A ]] && echo "A" || echo "not A"
?
和初学者版本(相同的逻辑):
正如Scott所说,您有一个语法错误(缺少空格)
解释
- 我在这里使用布尔逻辑。
执行,如果为真,则执行[[$1==A]]
,如果为假,则执行echo“A”
,请参阅echo“not A”
是一个bash关键字,与[[
命令类似(但功能更强大)。请参阅,除非您是为POSIX sh编写,否则我建议您使用[
[
将第一行更改为:
if [ "$1" == "A" ]
-eq运算符用于整数。正如其他人提到的,在“]'之前的空格确实很重要
参见此处:完美,你是一个救生员如果你认为答案有用,你可以“投票”它。你也可以通过点击
复选标记的大纲来“接受”答复(将为绿色),这样,搜索stackechange网站的人就会知道这个问题的答案很好。这就是stackechange网站的工作原理,谢谢;)当然,斯科特。也添加了长版本。