オプションのフラグと入力を含むbashスクリプトを作成しています。
$1
フラグがあると入力が変わるため、入力を取得できません。
たとえば、実行するとscript.sh test
テスト$1
と同じです。
ただし、実行するとscript.sh -b test
-b$1
と同じです。
while getopts 'bh' flag; do
case "${flag}" in
b) boxes= 'true' ;;
h) echo "options:"
echo "-h, --help show brief help"
echo '-b add black boxes for monjaro'
;;
*) error "Unexpected option ${flag}" ;;
esac
done
echo $1;
私が持っているフラグの数はまだ設定されておらず、今後さらに追加することを知っています。
フラグではなく最初の値を常に取得するにはどうすればよいですか?
答え1
通常、以下を使用しますgetopts
。
while getopts...; do
# process options
...
done
shift "$((OPTIND - 1))"
printf 'First non-option argument: "%s"\n' "$1"
上記のコマンドは、処理されたすべてのオプションパラメータ(存在する場合はshift
尾を含む)を削除します。--
getopts