次のようなステートメントを使用したいと思います。
var=$(( func arg ? str1 : str2 ))
しかし、bash では次の構文エラー メッセージが表示されます。
syntax error in expression (error token is "arg")
さまざまなフォームで遊んだことがありますが、引数を持つ関数を受け入れる方法がわかりません。何か案は?
次のようなステートメントを使用したいと思います。
var=$(( func arg ? str1 : str2 ))
しかし、bash では次の構文エラー メッセージが表示されます。
syntax error in expression (error token is "arg")
さまざまなフォームで遊んだことがありますが、引数を持つ関数を受け入れる方法がわかりません。何か案は?
echo $(( $(seq 1) + 1 ))
2
bash が他の場所で期待するのと同じ構文を使用する必要があります。条件付きまで ? iftrue : iffalse 構文、bash でそれを行うことはできないと思います。代わりに、次のようなことができます。
echo $(( 1 + $(true && echo 1 || echo 0) ))
2
質問した文は使い道がないというのが正解だと思います。問題は、この条件演算子は整数にしか評価できず、文字列には評価できないことです。
jm666 が Steve の回答へのコメントで質問に回答したので、私は彼に賛成票を投じました。