変数(その名前はスクリプトで静的に知られています)が設定されていない(空でない)ことを確認するポータブルテストはありますか?
ベストアンサー1
スカラー変数の場合、標準(POSIX)sh
構文が使用されます。
if [ "${var+set}" != set ]; then
echo var is not set
fi
または、よりきれいですが、あまり明確ではありません。
if [ -z "${var++}" ]; then
echo var is unset
fi
または:
if ${var+false}; then
echo var is unset
fi
配列変数の場合(配列持ち運べる)、bash、kshでは、配列にリスト(空のリストを含む)が割り当てられていない場合、inzsh
またはyash
unsetが返されます。未設定インデックス0の要素が設定されていない場合。連想配列と同じです(キー「0」の場合)。
zsh
(シミュレーションでない場合sh
)export var
またはreadonly var
主張する変数ですが値を提供しないので、それ以外のシェルはこれをこの変数としてzsh
報告します( / を呼び出す前に値が割り当てられていない場合)。var
unset
var
export
readonly