- 締切済み
シェル変数??case "${action:?}" in どうゆうこと????
シェルについて質問ですが、ある本でcase "${action:?}" in というフレーズを見たのですが、":?"のところの意味がわからないのですが、どういういみでしょうか? わからずもやもやしています。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 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 と表示されます。
補足
>メッセージを省略する(質問のケースですね)と、シェルが持っている >デフォルトのメッセージが使われます。 ということはわざわざ${a_kuma:?}とする必要がないということでしょうか? ${a_kuma}だけで良いということでしょうか?