Bash スクリプトで getopts を使用する
Fumbani Banda
2023年1月30日
このチュートリアルでは、引数付きのオプションと引数なしのオプションを解析することにより、bash スクリプトでの getopts
の使用法を示します。
Bash getopts
の引数を使用してオプションを解析する
文字 n
と c
の両方の前に:
があります。これは、オプション -n
または -c
が使用されるときはいつでも引数が提供されることを期待していることを意味します。変数 opt
は、getopts
によって解析された現在のオプションの値を保持します。
while getopts n:c: opt
do
case "${opt}" in
n) name=${OPTARG};;
c) country=${OPTARG}
esac
done
echo "I am $name";
echo "And I live in $country";
スクリプトを実行すると、-n
オプションは引数として John
を提供し、-c
オプションは引数として Britain
を提供します。
bash flags.sh -n John -c Britain
出力:
I am John
And I live in Britain
Bash の引数なしの解析オプション getopts
これは、-h
オプションが渡されたときにスクリプト usage
を出力する単純な bash スクリプトを使用し、-p
オプションがフォルダーへの指定されたパスとして使用された場合にフォルダーのコンテンツを出力します。口論。
最初の:
は、getopts
がエラーを報告しないことを意味します。代わりに、エラーは自分で処理します。文字 p
の前には:
がありますが、文字 h
にはありません。つまり、オプション -p
が使用される場合は常に引数が必要ですが、-h
オプションは引数なしで使用できます。
-h
オプションが渡されると、usage
関数が呼び出されます。-p
オプションは、path
変数に渡された引数を割り当てます。この引数は、引数として list
関数に渡されます。*
は、-h
または -p
ではないオプションが渡されたときに実行されるアクションを指定します。
#!/bin/bash
function usage {
printf "Usage:\n"
printf " -h Display this help message.\n"
printf " -p <folder path> List contents of specified folder.\n"
exit 0
}
function list {
ls -l $1
}
while getopts :p:h opt; do
case ${opt} in
h)
usage
;;
p) path=${OPTARG}
list $path
#echo $folder
;;
*)
printf "Invalid Option: $1.\n"
usage
;;
esac
done
-h
オプションを指定してスクリプトを実行します。
./getopts.sh -h
Usage:
-h Display this help message.
-p <folder path> List contents of specified folder.
-p
オプションを指定してスクリプトを実行します。
./getopts.sh -p /home/fumba/example
total 0
-rw-r--r-- 1 fumba fumba 0 Nov 1 21:43 file1.txt
-rw-r--r-- 1 fumba fumba 0 Nov 1 21:43 file2.txt
drwxr-xr-x 1 fumba fumba 4096 Nov 1 21:43 pictures
無効なオプション -k
を使用してスクリプトを実行します。
./getopts.sh -k
Invalid Option: -k.
Usage:
-h Display this help message.
-p <folder path> List contents of specified folder.
著者: Fumbani Banda