3
我想使用如下語句:
var=$((func arg ? str1 : str2))
但慶典給出了這樣的語法錯誤消息:
syntax error in expression (error token is "arg")
我用各種形式打,但我無法弄清楚如何使其接受帶有參數的功能。有任何想法嗎?
我想使用如下語句:
var=$((func arg ? str1 : str2))
但慶典給出了這樣的語法錯誤消息:
syntax error in expression (error token is "arg")
我用各種形式打,但我無法弄清楚如何使其接受帶有參數的功能。有任何想法嗎?
我認爲正確的答案是,沒有辦法使用我問過的聲明。問題是這個條件運算符只能計算一個整數而不是字符串,因爲我想這樣做。
jm666回答了史蒂夫答案的評論中的問題,所以我給了他一個投票。
echo $(($(seq 1) + 1))
2
您需要的慶典預計其他地方使用相同的語法。至於條件? iftrue:iffalse語法,我不認爲你可以在bash中做到這一點。相反,你可以做這樣的事情:
echo $((1 + $(true && echo 1 || echo 0)))
2
根據bash手冊(第6.5節)的建設expr? expr:expr是正確的。 – jm666 2011-06-08 18:41:10
我明白了。感謝您的更正。因此它在算術評估中起作用,例如$((0?1:2))的結果爲2.但是,根據原始問題,類似於var = $(func $([[arg -eq「something」]] && str1 || str2))的語法可能更合適。 – 2011-06-08 18:51:01
是的,條件運算符**僅適用於算術評估**。 (只有整數)... :) – jm666 2011-06-08 19:19:12