こんばんは、
sh
どのような目的の時に
このような記述をするのでしょうか?
それで、
http://docs.hp.com/ja/B2355-60104-02/sh-posix.1.html
に
--------------------------------
${parameter:+word}
parameter
echo
上記の式からコロン
-------------------------------
の説明があり
この部分に、相当するのではないかと
思ったのですが、
「チェックだけします」
とは
どのような動作をするのでしょうか?
コメント

- 2:otn
- 2008/08/28 17:11
古いshだと、引数が0個の時に
${1+"$@"}
ただ、手元のLinuxのbashで--posixオプションを付けて確認してみましたが、引数0個なら
おそらく、古い時代のシェルスクリプトをそのまま引き写したのではないでしょうか。
注:空

- 3:sion
- 2008/08/29 12:37
だんだん
もう少し正確な情報で自己フォローしておきます。
単にコマンドライン引数を参照するだけでなく、受け取った引数を、そっくりそのまま別コマンドに渡す場合などに以下のような書き方をします。
exec external_command ${1+"$@"}
理由は なってしまうのを回避するために以下のように書きたくないから。
if [ $# -eq 0 ]; then
exec external_command
else
exec external_command "$@"
fi
${parameter:+word} 「空」に訂正します。
sh
一応、手持ちのいくつかの
参考までに、コマンドライン引数が無い場合、$#
コマンドライン引数が
最近の

- 4:HIDEO
- 2008/09/20 23:59
こんばんは、
下記の部分を
自分でも確かめたいのですが、
どのようなスクリプトを書けばいいでしょうか?
ーーー ここから ーーーーー
sh
一応、手持ちのいくつかの
参考までに、コマンドライン引数が無い場合、$#
コマンドライン引数が
最近の
ーーー ここまで ーーー

- 5:sion
- 2008/09/25 11:56
何かの振る舞いを確認したり理解したりするという局面は、プログラミングをしていれば
日常茶飯事だと思いますので、このぐらいの確認は自力で解決できるように
したほうが良いでしょう。
今回は、一例として確認のしかた(のヒント)を紹介しておきます。
●man
man
ログイン可能な
------------------------------------------------------------
●「unset」と「null」と「その他」の確認
~ ${parameter:+word}
(1)
(2)
例:
・未定義の変数名
・「変数=」の変数名
・「変数=""」の変数名
・「変数=値」の変数名
・その他気になるケースがあれば…
※スクリプトを修正しながら繰り返し確認してもかまいませんし、
1つのスクリプト中で連続して表示してもかまわないと思います。
------------------------------------------------------------
●"$@"
(1)
(2)
(3)
例:
・$*
・$@
・"$*"
・"$@"
・${1+"$@"}
・未定義の変数名
・「変数=」の変数名
・「変数=""」の変数名
・「変数=値」の変数名
・その他気になるケースがあれば…
※スクリプトを修正しながら繰り返し確認してもかまいませんし、
1つのスクリプト中で連続して表示してもかまわないと思います。
前へ 1 次へ![]()
コメントする
[block]から[/block]までの範囲はブロック表示されます。
部分的に目立たせたい時や、引用などにお使いください。
[code]から[/code]までの範囲は等幅表示されます。
ソースコードや設定ファイルの記述などにお使いください。









${1+"$@"} は結果的に "$@" が展開されると思いますので、コマンドライン引数を参照する目的で使えます。ダブルクォートで囲んだ "$@" の場合は、"$1" "$2" ... "$n" のように展開されます。よく似た "$*" は "$1 $2 ... $n" のように展開されます。
では ${式} は、パラメータ展開を意味します。
は、以下のような展開を行います。
${パラメータ+代替値} は、以下のような展開を行います。
(:) を省略すると、シェルは parameter が設定されているかどうかだけを判別します。(ヌルかどうかのチェックを行わない)」といった理解で良いと思います。
sh
${パラメータ:+代替値}
パラメータが存在していない場合 → 空文字列
パラメータが存在しているが値が空の場合 → 空文字列
パラメータが存在しており、値が空でない場合 → 代替値
コロンを省略した
パラメータが存在していない場合 → 空文字列
パラメータが存在しているが値が空の場合 → 代替値
パラメータが存在しており、値が空でない場合 → 代替値
参照サイトは日本語訳なのだと思われますが、翻訳が少しおかしいのではないでしょうか?
原文は知りませんが、「上記の式からコロン