【问题标题】:use conditional in bash script to check string argument在 bash 脚本中使用条件来检查字符串参数
【发布时间】:2013-01-23 16:33:29
【问题描述】:

我正在尝试编写我的 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 进行比较;有人能告诉我让这个工作我缺少什么吗?谢谢

【问题讨论】:

    标签: linux bash shell terminal sh


    【解决方案1】:

    那么短的呢:

    #!/bin/bash
    
    [[ $1 == A ]] && echo "A" || echo "not A"
    

    ?

    还有一个初学者版本(相同的逻辑):

    #!/bin/bash
    
    if [[ $1 == A ]]; then
        echo "A"
    else
        echo "not A"
    fi
    

    就像 Scott 说的,你有一个语法错误(缺少空格)。

    解释

    【讨论】:

    • 完美,你是救命稻草
    • 如果你认为这个答案有用,你可以'upvote'它。您也可以通过单击checkmark 的轮廓(将是绿色)来“接受”回复,这样,搜索stackexchange 网站的人就会知道该问题得到了很好的回答。这就是 stackechange 网站的工作方式,谢谢 ;)
    • 当然斯科特。也添加了长版本。
    【解决方案2】:

    将第一行改为:

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

    -eq 运算符用于整数。正如其他人提到的,“]”之前的空格确实很重要。

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

    【讨论】:

      【解决方案3】:

      尝试在"A"] 之间放置一个空格。

      【讨论】:

        【解决方案4】:

        “A”后面需要一个空格

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

        【讨论】:

          猜你喜欢
          • 2013-03-02
          • 1970-01-01
          • 2016-03-06
          • 2015-01-16
          • 1970-01-01
          • 2021-12-31
          • 1970-01-01
          • 2018-02-17
          • 2023-01-29
          相关资源
          最近更新 更多