実行時に多くのオプションを持つbashスクリプトを作成したいと思います。
# script.sh --dry-run --user <parameter1> --pass <parameter2>
getoptオプションについて聞いたが、それらのうちの1つだけを書くことができるか、または--user or --password
すべて--dry-run
を書くことができないようです。基本的にこれを--user parameter1
input1 と input2 にしたい、オプションがある場合は本番コードの代わりにテスト実行コードだけが実行される--pass parameter2
特別な場合を作りたいと思います。--dry-run
#!/bin/bash
user=$1
pass=$2
help() {
cat<<EOF
Usage : $0 --dry-run --user <user_id> --pass <password>
you can specify --dry-run or --production
EOF
}
[ ${3} ] || help
function dry_run() {
// --dry-run code
}
function production() {
// --production code
}
--dry-run
オプションが「はい」の場合は--dry-run
関数を実行し、それ以外の場合は関数をdry_run()
実行していることを確認したいと思います。production()
しかし、オプションと検証を書く方法は?
ベストアンサー1
あなたがやっていることを私が理解しているなら、あなたはこれをすることができますgetopt
:
#!/bin/bash
PARAMS=$(getopt -l dry-run,production,user:,pass: -n $0 "" -- "$@")
if [ $? != 0 ]; then exit 1; fi
eval set -- "$PARAMS"
dryrun=false
while [ -n "$1" ]; do
case "$1" in
--dry-run) dryrun=true; shift;;
--production) dryrun=false; shift;;
--user) user="$2"; shift 2;;
--pass) pass="$2"; shift 2;;
--) shift;;
*) exit 1;;
esac
done
if [ $dryrun = true ]; then
...
else
...
fi
--dry-run
同時にAND指定を許可しない場合、または--production
ANDが必要な場合は、--user
さらに処理を追加できます。--password