アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (2件)

これは、以下のような構文になります。



${シェル変数:?メッセージ}

例えば、以下のような処理の場合、

$ echo ${a_kuma:?"変数 a_kuma が設定されてない"}

シェル変数 a_kuma が設定されていないと、?以降のメッセージを出力して
シェルを抜けます。

メッセージを省略する(質問のケースですね)と、シェルが持っている
デフォルトのメッセージが使われます。

もし、シェル変数に何か設定されていれば、その内容に置換されます。

$ a_kuma=kumakumakuma
$ echo ${a_kuma:?"変数 a_kuma が設定されてない"}

だったら、kumakumakuma と表示されます。

この回答への補足

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

補足日時:2001/08/15 12:14
    • good
    • 0

> ということはわざわざ${a_kuma:?}とする必要がないということでしょうか?



そこの行に達するまでに、シェル変数 a_kuma が設定されていることが
確実なのであれば、単に ${a_kuma} と書いているのと何ら変わりありません。

念のためのガードを入れておく、と考えて下さい。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!