【问题标题】:checking if output of a curl commnd is null or not in shell script在 shell 脚本中检查 curl 命令的输出是否为空
【发布时间】:2013-09-23 04:18:50
【问题描述】:

我正在编写一个 shell 脚本,curl 命令存储在一个变量中,如下所示:

str="curl 'http...'"

我正在使用

进行评估

评估 $str

我想检查 this 的输出是否为空,这意味着它是否正在返回一些东西。我该如何检查这个? 为什么我不能将输出存储在这样的变量中:

操作=评估 $str 为什么写这个会出错? 提前致谢

【问题讨论】:

    标签: shell curl command-line null


    【解决方案1】:

    使用命令替换:

    str="curl 'http...'"
    op=$(eval "$str")
    if [[ -n $op ]]; then
        echo "Output is not null."
    else
        echo "Output is null.
    fi
    

    实际上比使用 eval 更好的方法是使用数组,因为它更安全:

    cmd=("curl" "http://...")
    op=$("${cmd[@]}")
    if [[ -n $op ]]; then
        echo "Output is not null."
    else
        echo "Output is null.
    fi
    

    分配数组时,将每个参数分隔为单个元素。如果需要引用以将参数保持为一个完整的参数,则可以选择任何引用方法,无论是使用单引号还是双引号。

    顺便说一句,您只是遇到了一个错误,因为它不是调用您将获得输出的命令的正确方法。如前所述,您必须使用命令替换。一种称为流程替换的高级方法也可以适用,但对于需求来说并不实用。

    【讨论】:

      猜你喜欢
      • 2017-06-14
      • 1970-01-01
      • 2018-09-30
      • 2013-05-31
      • 2016-05-15
      • 1970-01-01
      • 2014-02-01
      • 2011-11-23
      相关资源
      最近更新 更多