If statement UNIX:将值传递给IF条件而不是值

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语句获得的两个字符串。 如果可能的话,请帮助我

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中操作符的一个很好的总结

非常感谢,丹尼尔。我将继续作为您的信息。