在shell脚本中检查curl commnd的输出是否为null

在shell脚本中检查curl commnd的输出是否为null,shell,curl,command-line,null,Shell,Curl,Command Line,Null,我正在编写一个shell脚本,curl命令存储在如下变量中: str="curl 'http...'" 我正在使用 估价$str 我想检查它的输出是否为null,这意味着它是否返回了一些东西。我如何检查它? 为什么我不能将输出存储在如下变量中: str="curl 'http...'" op=eval$str 为什么拧这个会产生错误? 提前感谢使用命令替换: str="curl 'http...'" op=$(eval "$str") if [[ -n $op ]]; then ec

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

str="curl 'http...'"
我正在使用

估价$str

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

str="curl 'http...'"
op=eval$str 为什么拧这个会产生错误?
提前感谢

使用命令替换:

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
分配数组时,将每个参数作为单个元素分开。如果要将一个参数保持为一个完整的参数,需要引用,则可以选择任何引用方法,无论是使用单引号还是双引号


顺便说一下,您只是有一个错误,因为这不是调用命令以获取输出的正确方式。如前所述,您必须使用命令替换。一种称为过程替换的高级方法也可以适用,但它不适用于需求。

使用命令替换:

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
分配数组时,将每个参数作为单个元素分开。如果要将一个参数保持为一个完整的参数,需要引用,则可以选择任何引用方法,无论是使用单引号还是双引号

顺便说一下,您只是有一个错误,因为这不是调用命令以获取输出的正确方式。如前所述,您必须使用命令替换。一种称为过程替代的高级方法也可以应用,但对于需求来说并不实用