複数宣言する際に、配列も交えて宣言ができる
myfunc(){ local next words=() prev next="taiwan" prev="korea" words=("a" "b" "c") echo $prev echo ${words[@]} } myfunc
$ bash cli.bash
korea
a b c
これで、以下のlocalの宣言の意味もわかりますね。
_bitcoin_cli() { local cur prev words=() cword local bitcoin_cli # save and use original argument to invoke bitcoin-cli for -help, help and RPC # as bitcoin-cli might not be in $PATH bitcoin_cli="$1" COMPREPLY=() // 省略 }
if ((cword > 5)); then case ${words[cword-5]} in sendtoaddress) COMPREPLY=( $( compgen -W "true false" -- "$cur" ) ) return 0 ;; esac fi
この COMPREPLY=( $( compgen -W “true false” — “$cur” ) ) は何をやっているかというと、COMPREPLYの中にcompgen … のコマンドを入れていますね。
COMMAND=() COMMAND=( $(date -d tomorrow) ) echo ${COMMAND[@]}
つまりbitcoin_cliで打った時のコマンド処理を書き換えています。