If statement UNIX:将值传递给IF条件而不是值
我正在尝试编写一个使用了IF语句的代码。 这里我试图比较使用awk语句获得的两个字符串。 如果可能的话,请帮助我If statement UNIX:将值传递给IF条件而不是值,if-statement,awk,If Statement,Awk,我正在尝试编写一个使用了IF语句的代码。 这里我试图比较使用awk语句获得的两个字符串。 如果可能的话,请帮助我 if [ "awk '/$search/ {print $3}' rpt1.txt" -eq "awk '/$search/ {print $3}' rpt2.txt" ] 当然可以,使用$()或`` if [ $(awk '/$search/ {print $3}' rpt1.txt) -eq $(awk '/$search/ {print $3}' rpt2.txt) ]
if [ "awk '/$search/ {print $3}' rpt1.txt" -eq "awk '/$search/ {print $3}' rpt2.txt" ]
当然可以,使用$()
或``
if [ $(awk '/$search/ {print $3}' rpt1.txt) -eq $(awk '/$search/ {print $3}' rpt2.txt) ]
如果您想要字符串比较而不是数字,那么您可能需要=
而不是-eq
如果你也做了一个函数,可能会读得更好:
search_report() {
awk "/$1/ { print \$3 }" $2
}
if [ $(search_report $search rpt1.txt) -eq $(search_report $search rpt2.txt) ]
...
您可以将stdout捕获到如下变量中:
variable=$(command)
试试这个
rpt1=$(awk '/$search/ {print $3}' rpt1.txt)
rpt2=$(awk '/$search/ {print $3}' rpt2.txt)
if [ "${rpt1}" == "${rpt2}" ]; then
echo "match";
fi
运算符-eq
仅适用于整数,这就是我使用==
的原因
更多关于捕获stdout的信息
这是对bash中操作符的一个很好的总结
非常感谢,丹尼尔。我将继续作为您的信息。