[英]Bash shell 'if' statement comparing outputs from different commands
使用Sam Ruby給我的一個改編的例子我已經調整過,所以我可以展示我想要實現的目標。
app1=$(someapp -flag | grep usefulstuff | cut -c 5-10)
if [$app1 = (someapptwo -flag | grep usefulstuff | cut -c 20-25)]; then
mkdir IPFolder-1
elif ...blah blah
fi
我可以使用上面顯示的grep,還是我在錯誤的樹上吠叫? 或者看起來像這樣的東西:
app1=$(someapp -flag | grep usefulstuff | cut -c 5-10)
app2=$(someapptwo -flag | grep usefulstuff | cut -c 20-25)
if [$app1 = $app2]; then
mkdir IPFolder-1
elif ...blah blah
fi
至少在其他炮彈中,你需要更加小心空間; 方括號是命令名稱,需要與上一個和后一個單詞分開。 您還需要(再次在經典shell中)將變量嵌入雙引號中:
app1=$(someapp -flag | grep usefulstuff | cut -c 5-10)
if [ "$app1" = "$(someapptwo -flag | grep usefulstuff | cut -c 20-25)" ]
then mkdir IPFolder-1
elif ...blah blah
then : do this instead...
fi
你可以在一行中完成所有操作(好吧,兩個因為我盡可能避免使用水平滾動條):
if [ "$(someapp -flag | grep usefulstuff | cut -c 5-10)" = \
"$(someapptwo -flag | grep usefulstuff | cut -c 20-25)" ]
then mkdir IPFolder-1
elif ...blah blah
then : do this instead...
fi
或者您可以使用兩個單獨的命令捕獲來執行此操作:
app1=$(someapp -flag | grep usefulstuff | cut -c 5-10)
app2=$(someapptwo -flag | grep usefulstuff | cut -c 20-25)
if [ "$app1" = "$app2" ]
then mkdir IPFolder-1
elif ...blah blah
then : do this instead...
fi
更新:添加了一些額外的報價。 也可以引用作業:
app1="$(someapp -flag | grep usefulstuff | cut -c 5-10)"
不會造成傷害; bash
並不是絕對必要的(但是對於古老的Bourne shell來說可能是必要的)。
您需要通過在$前面引用表達式的值:
...
if [ "$app1" = "$(someapptwo -flag | grep usefulstuff | cut -c 20-25)" ]; then
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.