シェルスクリプトの特別な検証が必要です。

シェルスクリプトの特別な検証が必要です。

実行時に多くのオプションを持つbashスクリプトを作成したいと思います。

# script.sh  --dry-run --user <parameter1> --pass <parameter2>

getoptオプションについて聞いたが、それらのうちの1つだけを書くことができるか、または--user or --passwordすべて--dry-runを書くことができないようです。基本的にこれを--user parameter1input1 と 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指定を許可しない場合、または--productionANDが必要な場合は、--userさらに処理を追加できます。--password

おすすめ記事