我想写一个代码,我已经使用了IF语句。 这里我想比较使用awk语句获得的2个字符串。 请帮助我...如果这是可能的。UNIX:将值传递给IF条件而不是值
if [ "awk '/$search/ {print $3}' rpt1.txt" -eq "awk '/$search/ {print $3}' rpt2.txt" ]
我想写一个代码,我已经使用了IF语句。 这里我想比较使用awk语句获得的2个字符串。 请帮助我...如果这是可能的。UNIX:将值传递给IF条件而不是值
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
仅适用于整数,这就是为什么我使用==
代替。
更多有关捕获标准输出 http://www.cyberciti.biz/faq/unix-linux-bsd-appleosx-bash-assign-variable-command-output/
这是运营商在bash的一个很好的总结 http://tldp.org/LDP/abs/html/comparison-ops.html
非常感谢丹尼尔。我会按照你的信息进行。 – greatvedas 2013-03-20 13:06:44