使用条件在bash脚本来检查字符串参数(use conditional in bash script

2019-08-16 20:20发布

我想写我的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; 可能有人告诉我什么,我缺少的得到这个工作? 谢谢

Answer 1:

怎么样的短:

#!/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的,我建议[[


Answer 2:

更改第一行:

if [ "$1" == "A" ]

-eq运算符是整数。 正如其他人所提到的,空间前的“]”事做。

在这里看到: http://tldp.org/LDP/abs/html/comparison-ops.html



Answer 3:

尝试把之间的空间"A"]



Answer 4:

你需要“A”后面输入一个空格

if [ "$1" -eq "A" ]


文章来源: use conditional in bash script to check string argument