• 締切済み

シェル変数??case "${action:?}" in どうゆうこと????

シェルについて質問ですが、ある本でcase "${action:?}" in というフレーズを見たのですが、":?"のところの意味がわからないのですが、どういういみでしょうか? わからずもやもやしています。よろしくお願いします。

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> ということはわざわざ${a_kuma:?}とする必要がないということでしょうか? そこの行に達するまでに、シェル変数 a_kuma が設定されていることが 確実なのであれば、単に ${a_kuma} と書いているのと何ら変わりありません。 念のためのガードを入れておく、と考えて下さい。

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

これは、以下のような構文になります。 ${シェル変数:?メッセージ} 例えば、以下のような処理の場合、 $ echo ${a_kuma:?"変数 a_kuma が設定されてない"} シェル変数 a_kuma が設定されていないと、?以降のメッセージを出力して シェルを抜けます。 メッセージを省略する(質問のケースですね)と、シェルが持っている デフォルトのメッセージが使われます。 もし、シェル変数に何か設定されていれば、その内容に置換されます。 $ a_kuma=kumakumakuma $ echo ${a_kuma:?"変数 a_kuma が設定されてない"} だったら、kumakumakuma と表示されます。

mumin365
質問者

補足

>メッセージを省略する(質問のケースですね)と、シェルが持っている >デフォルトのメッセージが使われます。 ということはわざわざ${a_kuma:?}とする必要がないということでしょうか? ${a_kuma}だけで良いということでしょうか?

関連するQ&A

専門家に質問してみよう