複数宣言する際に、配列も交えて宣言ができる
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で打った時のコマンド処理を書き換えています。