我有一个这样的剧本

genhash --use-ssl -s $IP -p 443 --url $URL | grep MD5 | grep -c $MD5

我想在变量中获得由genhash生成的流。我如何重定向到一个变量$哈希内比较条件?

if [ $hash -ne 0 ]
  then echo KO
  exit 0
else echo -n OK
  exit 0
fi

当前回答

read hash < <(genhash --use-ssl -s $IP -p 443 --url $URL | grep MD5 | grep -c $MD5)

该技术使用Bash的“进程替换”,不要将其与“命令替换”混淆。

这里有一些很好的参考:

http://www.linuxjournal.com/content/shell-process-redirection http://tldp.org/LDP/abs/html/process-sub.html http://tldp.org/LDP/abs/html/commandsub.html☚供比较

其他回答

read hash < <(genhash --use-ssl -s $IP -p 443 --url $URL | grep MD5 | grep -c $MD5)

该技术使用Bash的“进程替换”,不要将其与“命令替换”混淆。

这里有一些很好的参考:

http://www.linuxjournal.com/content/shell-process-redirection http://tldp.org/LDP/abs/html/process-sub.html http://tldp.org/LDP/abs/html/commandsub.html☚供比较

你可以:

hash=$(genhash --use-ssl -s $IP -p 443 --url $URL)

or

hash=`genhash --use-ssl -s $IP -p 443 --url $URL`

如果你想将整个管道的结果赋值给变量,你可以在上面的赋值中使用整个管道。

我想合适的方式是:

hash=`genhash --use-ssl -s $IP -p 443 --url $URL | grep MD5 | grep -c $MD5`

但我更喜欢

hash="$(genhash --use-ssl -s $IP -p 443 --url $URL | grep MD5 | grep -c $MD5)"

创建一个函数,将其作为要调用的命令调用。在本例中,我需要使用ruok命令。

然后,调用该函数并将其结果赋值给一个变量。在本例中,我将结果分配给变量health。

function ruok {
  echo ruok | nc *ip* 2181
}

health=echo ruok *ip*

使用$(…)构造:

hash=$(genhash --use-ssl -s $IP -p 443 --url $URL | grep MD5 | grep -c $MD5)