我正在尝试编写一个使用 IF 语句的代码。在这里,我试图比较使用 awk 语句获得的 2 个字符串。请帮助我......如果这是可能的。
if [ "awk '/$search/ {print $3}' rpt1.txt" -eq "awk '/$search/ {print $3}' rpt2.txt" ]
我正在尝试编写一个使用 IF 语句的代码。在这里,我试图比较使用 awk 语句获得的 2 个字符串。请帮助我......如果这是可能的。
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) ]
...
您可以将标准输出捕获到这样的变量中:
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中运算符的出色总结