ksh変数の宣言と反復

ksh変数の宣言と反復

kshスクリプトを操作して理解する必要があります。変数が宣言される方法は、私が慣れていた方法とは異なります。

STA=${1:-blabla}

「1:-」が何を意味するのかよく分からない。次のループでこの変数宣言を使用できますか?

STA=${1:-blabla blabla2 blabla3}

答え1

${var:-x}これは、「varが設定されていないか空の場合はxに置き換えます」を意味します。したがって、「ループ生成」の意味によって異なります。

分割してループを生成する場合は、$IFSそれを使用してループの変数を生成できます。しかし、それがあなたが望むものなら、ksh配列を使用することをお勧めします。

if [ "$#" -eq 0 ]; then
  set -A sta blabla blabla2 blabla3 # ksh88/pdksh/mksh/ksh93
  sta=(blabla blabla2 blabla3)      # ksh93/mksh
else
  sta=("$@") # use the positional parameters if provided
fi

for x in "${sta[@]}"; do [...]

答え2

${1}スクリプトの最初のパラメータです。代替修飾子の説明については、:-次を参照してください。マニュアルページksh:

${名前:-言葉}

もし名前設定されている場合は置き換えられ、それ以外の場合はNULLではありません。言葉交換されます。

したがって、パラメータがスクリプトまたは関数に提供されると、$STAそのパラメータの値が割り当てられます。それ以外の場合は、${1}デフォルト値$STA「blabla」が割り当てられます。

これはループ演算子ではありません。複数の値を繰り返すには${1:-blabla blabla2 blabla3}

関連情報