在shell脚本中检查curl commnd的输出是否为null
我正在编写一个shell脚本,curl命令存储在如下变量中:在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
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
分配数组时,将每个参数作为单个元素分开。如果要将一个参数保持为一个完整的参数,需要引用,则可以选择任何引用方法,无论是使用单引号还是双引号
顺便说一下,您只是有一个错误,因为这不是调用命令以获取输出的正确方式。如前所述,您必须使用命令替换。一种称为过程替代的高级方法也可以应用,但对于需求来说并不实用