• 締切済み

シェル変数??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

  • in case (that) について

    in case ~(should)と本にあり、これで例文を作るときには suggestのI suggested to him that he (should )take a rest.のように言いたいことの中身の動詞は原形だと思っていました。 (1)In case the road should be crowded, you should take a train. と作るもんだと思っています。しかし (2)In case the road is crowded, ~.という例文も見つけました。 (1)だと覚えていたので、(3)In case the road be crowded,~なんじゃないの?と思っています。(3)は間違い文ですか? in case (that)の後にくる文はいつもshould(万が一)を入れなくてもいいのですか? またshouldのないin caseの文(2)と(1)を比べて何がちがうのでしょうか?万が一の度合い??? 本にあった 解説のin case ~(should)の (should)の意味は(2)のような文にして、後の文にshouldを入れてもいいよという意味なのでしょうか? 教えてください。

  • in case of 「~に備えて」

    なぜ in case of には2つの意味があるのですか? 1.「~の場合には」 In case of emergency, press this button. 2. 「~に備えて」 Always keep a bucket of water handy, in case of fire. in case of が文頭に来た場合の、1の意味は文字通り直訳で分かるのですが、なぜ2のように文尾に来た場合は「備えて」という意味になってしまうのですか?

  • in the case とin case, 英英辞書での説明

    in the case of とin case ofの違いを、non-native の外国人に説明しようとしているのですが、困っております。お知恵をお貸し下さい。 これらの使い方の違いについては、別の質問http://oshiete1.goo.ne.jp/qa1943698.html とその回答に解説されております。また、英和辞書には必ずといってよいほど、これに関する記載(特にin case of)があり、違い自体の質問ではありません。 -- 本題です。non-nativeの外国人と共同で文書を書くことがよくあるのですが、上記の濫用に頻繁に出会います。ただ、説明しても納得されないことのほうが多いです。 実際問題としてin case of とin the case of の濫用は非常によく見かけます。また、比較的大きめの英英辞書などを引いても、それほどはっきりとした記述はありません。 質問は、 1)実際のところ、どうなの? ほんとに違うの? 2)英語で書かれてあり、なおかつ権威のある解説(辞書、著名なwriting styleの本など)をご存知ありませんでしょうか? お知恵をお貸し下さい。宜しくお願いします。

  • "In case that..." と "In the case of..." について

    冠詞について質問です。生まれてからずっと日本にいるので、英語はあまり親しんでいないのですが・・・。 「~の場合」という文において、 ・In the case of ... のように、後に名詞句が続く場合は "case" に冠詞 "the" がついて、 ・In case that ... のように、後に節が続く場合は "case" に冠詞がつかないように思えます。 以上は一般的に成り立つと考えて良いのでしょうか? あとに続く文によって、 "case" に冠詞がつくか否かが変わるのは奇妙に思えたので、質問いたしました。 よろしくお願いします。

  • exitコマンドの後の変数について(シェル)

    シェルをはじめたばかりの初心者です。 以下のようなシェルがあります。exit後のexit_cancelという変数は何に使われるのでしょうか? exitしてしまえばシェルは終了してしまうので exit_cancelという変数は関係ない気もするのですが・・・ ちなみにexit_cancelという変数はシェル内には どこにも定義していません。 どなたか教えて頂けないでしょうか? 何卒よろしくお願い致します。 case "${opt_exec}" in "z") ;;  *)     print -n "本当によろしいですか?[y/n] =>"     read REPLY   if [[ ${REPLY} != "y" ]] then echo "処理を中止します。" exit ${exit_cancel}        fi esac

  • in case of と in the event of の違い

    初めて質問を投稿します。 in case of と in the event of はどちらも「~の場合」というような意味かと思いますが、微妙なニュアンスの違いなどあるのでしょうか。 教えてください。 よろしくお願いします。

  • シェルのcase文で正規表現を使って1~99までだったらというようにしたい

    #!/bin/sh case $1 in [1-9])echo $1;; [1-9]*10+[1-9])echo $1;; *)echo "エラー";; esac シェルの第一引数が1~99だった場合、その引数を表示するというものを作りたいのですが、 これだと二桁の数字を入力した際に*)echo "エラー";;の方へ行ってしまいます。 これではだめでしょうか? またもしcase文でこういった事ができるのなら今は2行に渡って書いていますが、 これを1行にして書くことなどはできるのでしょうか?

  • case inの制御文

    シェルスクリプトの下記ソースに間違いはないですか? 最後のesacの次に改行は必要ですか? #!/bin/sh echo teststart i=2 case $i in 1) echo "a" ;; 2) echo "b" ;; *) echo "c" ;; esac

  • in case of と in the case of

    昨日、前置詞の勉強をしていたのですが、 in case of と in the case of とがあり苦労しています。この問題は本質的には冠詞の問題になると思いますが、その観点から考えても冠詞がつくつかないがみえてきません。 よろしくお願いします。

  • シェルとシェルの間で環境変数を引き継ぐ方法

    初めて質問させていただきます。 シェル内でsetenvにて定義された変数を別のシェルにて使う方法があれば教えてください。 よろしくお願いします。