【问题标题】:ksh script if condition not accepting brackets如果条件不接受括号,则 ksh 脚本
【发布时间】:2014-10-09 01:14:52
【问题描述】:

所以我不习惯使用 shell 脚本。我有一个 ksh 脚本,它的 if coniditon 类似于下面。

if [[ "asdasd" -eq "asdas()d" ]]; then

但是当它运行时它会抱怨

./closedown[36]: asdas()d: unexpected `('

我试过这样逃避它

if [[ "asdasd" -eq "asdas\(\)d" ]]; then

然后它抱怨

./closedown[36]: asdas\(\)d: unexpected `\'

希望有人能帮帮我,干杯

【问题讨论】:

    标签: shell scripting ksh


    【解决方案1】:

    除了上述关于使用 '=' 与 '-eq' (用于数值比较)进行文本比较的 cmets 之外,双引号允许 shell 尝试解释您传递给 if 条件的内容。

    将其更改为使用单引号 - 像这样:

    root@bumblebee> [[ 'asdasd' = 'asdas()d' ]] && echo 'Hello:)' || echo 'World:('
    World:(
    
    root@bumblebee>
    

    【讨论】:

      【解决方案2】:

      -eq用于数字比较,两边都需要数字。

      【讨论】:

      • 并改用===
      猜你喜欢
      • 1970-01-01
      • 2015-05-02
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      • 2016-03-31
      • 1970-01-01
      相关资源
      最近更新 更多