私は、ユーザ入力からパラメータを受け取るスクリプトを持っていますが、環境変数からのパラメータを持つこともできます。環境変数でbashパラメータを累積し、それらを完全に解析する
: - :それはエラーを生成ように動作しないことを除いて
$*="${ADZ_DEPLOY_OPT} $*"
while [[ $# -gt 1 ]]
do
key="$1"
case $key in
--rootDir)
ADZ_ROOT_DIR="$2"
shift # past argument
;;
--tagVersion)
ADZ_TAG_VERSION="$2"
shift # past argument
;;
--from-git)
ADZ_DEPLOY_FROM_GIT=1
;;
*)
# unknown option
;;
esac
shift # past argument or value
done
輸出ADZ_DEPLOY_OPT =「--rootDir XXXXXXXのgit-から」
と私のスクリプトでは、私のような何かをしようと追加の値で展開するために$ *を更新しようとすると、この動作を達成する方法を見つけることができませんでした。
また、env変数は「デフォルト」として動作しますが、ユーザーがコマンドラインで明示的に指定したものによって上書きされる可能性があります。私の例では、ユーザーが別のrootDirを指定した場合、ユーザーrootDirを考慮してほしいです。
最後に、私は長いパラメータ名(私は明示的に好きです)を保ちたいので、getoptsの使用はオプションのようには見えません。
ご協力いただければ幸いです。
ありがとうございます。
ステートメントが単純に「動作しません」という問題が発生した場合、解決策を提示することは困難です。 質問を編集して、 のどのようなことが起こるのか、実際の の結果とどのように違うのかをより詳しく説明してください。良いものを作るためのヒントについては、[ask]を参照してください。 –