ケース構造を含むコード スニペットを見たことがあります。
while true;
do
case "$1" in
--prepare)
echo "prepare"
ENV_PREPARE
exit 0
;;
--sleep)
SLEEP_TIME=$2
shift 2
;;
--)
shift
break
;;
*)
echo "Internal error!"
exit 1
;;
esac
done
bash のケース構造における --) はどういう意味ですか?
--)
shift
break
;;
答え1
叩くことに特別な意味はありません。
このスニペットの作成者は、他の文字なしで 2 つのハイフンだけを一致させたいと考えていました。文字通り「--」です。
多くの Unix コマンドライン ツール、特に GNU 系のツールでは、区切り文字として「--」を使用できます。これは、「このポイントより先はオプションとして扱われません。コマンドラインの残りは引数 (ファイルを操作するコマンドのファイル名のリストなど) で構成されます」という意味です。この方法では、次のように入力して、「--help」という名前のファイルを削除できます。
rm -- --help
rm
「--help」がヘルプ ステートメントを表示するための長いオプションであると認識されないようにします。(これは悪い例ですが、私の言っている意味は理解していただけると思います。)
そのスクリプトの作者は、スクリプト内で「--」をそのように動作させたかったのだと思います。