次の構文を持つbashスクリプトを使用しています
$ declare -a THIS[*]
これは zsh では違法のようです (「一致するものが見つかりません: THIS[*]」というエラーが表示されます)。これをzshに変換するのを手伝ってくれる人はいますか?
また、[*]
構文の意味は何ですか? (配列を宣言しているのはわかっていますが、なぜ [*] なのですか?)
アップデート
コードが使用される場所の例を提供し、その有効性を説明するために、Eric Engstrom のpassword free sshに関する投稿から数行をコピーしました。
declare -a SSSHA_KEYS[*]
# --- PARSE ARGS --- #
sssha_parse_args() {
local OPTIND=1
while getopts "xe:k:t:" OPT; do
#echo "$OPT $OPTARG $OPTIND"
case $OPT in
t) SSSHA_ARGS="-t $OPTARG" ;;
e) SSSHA_ENV="$OPTARG" ;;
k) [ -f "${OPTARG}" ] && SSSHA_KEYS[${#SSSHA_KEYS[*]}]="$OPTARG" ;;
x) SSSHA_STOP_ON_EXIT=$OPT
esac
done
shift $(($OPTIND - 1))
# set default key, if none specified
if [ -z "${SSSHA_KEYS[*]}" ]; then
for key in $HOME/.ssh/id_[rd]sa; do
[ -f "$key" ] && SSSHA_KEYS[${#SSSHA_KEYS[*]}]="$key"
done
fi
}
ある種の動的イテレーターとして使用されていると思い[*]
ます (後でアイテムがいくつになるかわからないため)。zshでの同等の宣言を知りたいだけです!