我正在使用具有以下语法的 bash 脚本
$ declare -a THIS[*]
这在 zsh 中似乎是非法的(我收到“找不到匹配项:THIS[*]”错误)。谁能帮我把它翻译成zsh?
另外 -[*]
语法是什么意思?(我知道我们正在声明一个数组,但为什么是 [*]?)
更新
为了提供一个使用代码的示例,并解释它是如何有效的 - 我从 Eric Engstrom 的关于无密码 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中的等效声明!