所以這裏有一個有趣的代碼片段,我正在努力,併爲我的生活無法弄清楚我做錯了什麼。過於複雜的條件操作問題
(chomp($CMD=`whereis blah | awk '{print \$2}'`) ||
chomp($CMD=`whereis cat | awk '{print \$2}'`)) ?
(print "$CMD\n") : (print "Neither command exists.");
print "$CMD\n";
執行時,它總是打印空字符串。據我所知,第二個賦予$ CMD的任務永遠不會被執行。我純粹將「blah」和「cat」包含在演示中。理想情況下,我將檢查兩個可能或不可能安裝在給定系統上的命令。這就是爲什麼我有兩個任務嵌套在條件內。如果這兩個都沒有找到(因此有兩個空字符串),我希望它執行false子句。但是,如果其中一個或另一個命令確實存在,我希望它分配給$ CMD並執行true子句(僅在上面的示例中打印$ CMD)。我玩過各種組合,但似乎無法完成這項工作。
我知道這可以分解並執行幾個簡單的語句來實現相同的結果,但好奇心/固執已經越來越好,我想知道爲什麼上述不起作用。任何幫助你可以提供將不勝感激。
我寧可不喜歡在void上下文中使用條件運算符。或者打電話給awk做一些事情。 – tchrist 2010-11-24 22:24:41