2011-06-08 20 views
3

我想使用如下語句:

var=$((func arg ? str1 : str2)) 

但慶典給出了這樣的語法錯誤消息:

syntax error in expression (error token is "arg") 

我用各種形式打,但我無法弄清楚如何使其接受帶有參數的功能。有任何想法嗎?

回答

1

我認爲正確的答案是,沒有辦法使用我問過的聲明。問題是這個條件運算符只能計算一個整數而不是字符串,因爲我想這樣做。

jm666回答了史蒂夫答案的評論中的問題,所以我給了他一個投票。

2
echo $(($(seq 1) + 1)) 
2 

您需要的慶典預計其他地方使用相同的語法。至於條件? iftrue:iffalse語法,我不認爲你可以在bash中做到這一點。相反,你可以做這樣的事情:

echo $((1 + $(true && echo 1 || echo 0))) 
2 
+1

根據bash手冊(第6.5節)的建設expr? expr:expr是正確的。 – jm666 2011-06-08 18:41:10

+0

我明白了。感謝您的更正。因此它在算術評估中起作用,例如$((0?1:2))的結果爲2.但是,根據原始問題,類似於var = $(func $([[arg -eq「something」]] && str1 || str2))的語法可能更合適。 – 2011-06-08 18:51:01

+2

是的,條件運算符**僅適用於算術評估**。 (只有整數)... :) – jm666 2011-06-08 19:19:12

相關問題