Bash スクリプトで getopts を使用する
Fumbani Banda
2023年1月30日
Bash
Bash Getopts
Bash Script
このチュートリアルでは、引数付きのオプションと引数なしのオプションを解析することにより、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.
チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
著者: Fumbani Banda
