- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:${@+"${@}"}は何を表していますか?)
${@+"${@}"}とは?
このQ&Aのポイント
- シェルスクリプトで使われる${@+"${@}"}という表記について、その意味と使い方について解説します。
- また、「${PROGRAM_DIR?}」という記述についても説明します。
- この要約では、${@+"${@}"}と${PROGRAM_DIR?}という表記の意味について詳しく解説します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
そのあたりの記号の意味は、man bash の「パラメータの展開」の説明の所に書いてあります。 ${PROGRAM_DIR?} ⇒ $PROGRAM_DIR に展開する。ただし未設定ならエラーメッセージを表示 ${X+$Y} ⇒ $X が未設定なら空に展開する。$Xが設定されていれば $Y に展開する ${@+"${@}"} ⇒ bash に於いては "$@" と同じ。引数が0個なら空に展開し、引数があれば、それぞれの引数に展開する。 古いシェルに於いては、単に "$@" と書くと、引数がない場合、空でなく空文字列に展開されたので、上記のように書く必要があった。 空と空文字列の違いがわからなければ、 echo 引数は $# 個 echo 引数は "$@" です。 というシェルスクリプトファイルを作って、例えばそれを foo とすると、 ./foo ./foo "" を実行してみれば、空(./foo)と、空文字列(./foo "")の違いがわかります。
お礼
ありがとうございます。とても分かりやすい回答でした。 空と空文字の件も試してみました。"$@"はどちらも""ですが、./fooとした場合は引数が0個でした。空文字列は引数があるけど内容は""、空は引数自体ないということですね。