我正在尝试编写我的 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 进行比较;有人可以告诉我我缺少什么才能让它发挥作用吗?谢谢
最佳答案
更短的呢:
#!/bin/bash
[[ $1 == A ]] && echo "A" || echo "not A"
?
和初学者版本(相同的逻辑):
#!/bin/bash
if [[ $1 == A ]]; then
echo "A"
else
echo "not A"
fi
正如 Scott 所说,您有一个语法错误(缺少空格)。
解释
- 我在这里使用 bool 逻辑。执行
[[ $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 编写代码,否则我建议您使用[[
。
关于linux - 在 bash 脚本中使用条件检查字符串参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14763608/