0

我正在尝试编写一个使用 IF 语句的代码。在这里,我试图比较使用 awk 语句获得的 2 个字符串。请帮助我......如果这是可能的。

if [ "awk '/$search/ {print $3}' rpt1.txt" -eq    "awk '/$search/ {print $3}' rpt2.txt" ]
4

2 回答 2

0

当然,使用$()或``。

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) ]
...
于 2013-03-20T06:53:46.133 回答
0

您可以将标准输出捕获到这样的变量中:

variable=$(command)

试试这个

rpt1=$(awk '/$search/ {print $3}' rpt1.txt)
rpt2=$(awk '/$search/ {print $3}' rpt2.txt)

if [ "${rpt1}" == "${rpt2}" ]; then
    echo "match";
fi

该运算符-eq仅适用于整数,这就是我使用它的原因==

更多关于捕获标准输出 http://www.cyberciti.biz/faq/unix-linux-bsd-appleosx-bash-assign-variable-command-output/

这是 bash http://tldp.org/LDP/abs/html/comparison-ops.html中运算符的出色总结

于 2013-03-20T07:00:21.363 回答