ワンライナーBash引数検証、ディレクトリ検証あり、なし
ここに私のために働いたいくつかの方法があります。これらは、グローバルスクリプト名前空間のいずれかで使用できます(グローバル名前空間にある場合、関数の組み込み変数を参照できません)。
素早く汚れたワンライナー
: ${1?' You forgot to supply a directory name'}
出力:
./my_script: line 279: 1: You forgot to supply a directory name
Fancier-関数名と使用法を提供する
${1? ERROR Function: ${FUNCNAME[0]}() Usage: " ${FUNCNAME[0]} directory_name"}
出力:
./my_script: line 288: 1: ERROR Function: deleteFolders() Usage: deleteFolders directory_name
現在の関数を混乱させることなく、複雑な検証ロジックを追加します
引数を受け取る関数またはスクリプト内に次の行を追加します。
: ${1?'forgot to supply a directory name'} && validate $1 || die 'Please supply a valid directory'
次に、次のような検証関数を作成できます
validate() {
#validate input and & return 1 if failed, 0 if succeed
if [[ ! -d "$1" ]]; then
return 1
fi
}
失敗時にスクリプトを中止するダイ機能
die() { echo "$*" 1>&2 ; exit 1; }
追加の引数については、フォーマットを複製して行を追加するだけです。
: ${1?' You forgot to supply the first argument'}
: ${2?' You forgot to supply the second argument'}