コマンド置換による空の変数へのデフォルトの割り当て

コマンド置換による空の変数へのデフォルトの割り当て

次の構文を使用しようとしています。

A=${B:-C}

A変数はどこにあり、B割り当てたい値はCBが空のときのデフォルト値です。

Bこれでコマンド置換を使用したいnc -l 443ので、ncポート443を介して文字列をリッスンすると変数に割り当てられ、Aそうでない場合はAデフォルトに設定されます。私は次のようにコマンドを書きます。

A=${`nc -l 443`:-NULL}

しかし、エラーが発生します。

-bash: A=${`nc -l 443`:-NULL}: bad substitution

この目標をどのように達成できますか?

ベストアンサー1

以下を除いて、最新のBourneに似たシェルでは入れ子になった代替は使用できませんzsh

$ print -rl -- ${$(echo):-C}
C
$ print -rl -- ${$(echo 1):-C}
1

他のシェルでは:

A=$(nc -l 443)
A=${A:-C}

おすすめ記事