Linux
需要對 shell 腳本進行特殊驗證
我想創建一個 bash 腳本,它在執行時會有很多選項。
# script.sh --dry-run --user <parameter1> --pass <parameter2>
我聽說過 getopt 選項,但看起來我們只能寫其中一個,
--user or --password
或者--dry-run
不能全部寫。基本上我想--user parameter1
作為 input1 和--pass parameter2
input2 以及一個特殊情況,如果--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()
函式。但是如何編寫選項和驗證?
如果我明白你在追求什麼,你可以這樣做
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
,或者如果需要--user
and ,則可以添加更多處理--password
。