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}
。