--host=hostname
フォームパラメータが必要で、オプションのパラメータを受け入れるカスタムスクリプトがあります-n, --dry-run
。
zsh
オプションのパラメータが提供される完成を作成しました。
#compdef sync-data.sh
_sync-data.sh () {
local -a args
args+=(
'(-n --dry-run)'{-n,--dry-run}'[show what would have been transferred]'
)
_arguments $args && return
}
_sync-data.sh "$@"
--host=hostname
しかし、次のように必須項目をどのように追加しますか?
- 最初の引数として実行されます。
- 次の部分は私が完了した内容に
=
基づいて書かれています。_hosts
--dry-run
--host=
必須オプション提供後完了--host=hostname
Afterが提供され、オプションで--dry-run
他の補完は提供されません(つまり、ローカルファイル名はありません)。
答え1
1+2)次の内容を_argumentsにパラメータとして追加します。
'--host=[specify host]:host:_hosts'
角かっこ内の部分は改善が必要な場合がある説明です。
追加を条件付きに
--dry-run
しますargs
。(( CURRENT > 2 ))
2番目の単語から追加を開始します。コマンドラインに存在することを確認してください(( $words[(I)--host*] ))
。--host
何が適切かによって異なります。これがデフォルト値でなければなりません。
関数にいくつかの重複要素が追加されました。 aを_sync-data.sh
ファイルの内容全体として定義してから呼び出す必要はありません。これは、1つの関数で複数の関数を定義する場合にのみ便利です。自動ロード機能はすでに機能です。さらに、これは&& return
重複しています。関数には最後のコマンドの戻り状態が渡されます。
コメントから要求された完全なコード:
#compdef sync-data.sh
local -a args
(( $words[(I)--host*] )) && args+=(
'(-n --dry-run)'{-n,--dry-run}'[show what would have been transferred]'
)
_arguments $args \
'--host=[specify host]:host:_hosts'