2013-03-20 58 views
0

我想寫一個代碼,我已經使用了IF語句。 這裏我想比較使用awk語句獲得的2個字符串。 請幫助我...如果這是可能的。UNIX:將值傳遞給IF條件而不是值

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

回答

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) ] 
... 
+0

非常感謝丹尼爾。我會按照你的信息進行。 – greatvedas 2013-03-20 13:06:44

0

可以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