- PR -

fuctionに渡す文字列の引数

1
投稿者投稿内容
minami
会議室デビュー日: 2008/02/21
投稿数: 1
投稿日時: 2008-02-21 02:00
はじめまして、よろしくお願い致します。

bシェルで、

function hoge {
echo $1
}

aaa="abc def"
echo $aaa

$(hoge $aaa)


上記のようなソースで、
変数aaa代入直後の、echoではabc edfが出力されますが、
hogeファンクションに変数aaaを渡して、hoge内のechoの結果を見ると
abcという文字だけが出力されます。

変数aaa内に空白があるため、起きている事だと思いますが、
文字列の中に空白があっても、一つの文字列としてファンクションに
渡す記述方法はないでしょうか?

よろしくお願いします。
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2008-02-21 09:02
こんにちは

$(hoge $aaa)
でファンクションが呼べているんですか?
これではコマンド hoge を実行しようとするのでは?

hoge $aaa
じゃないでしょうか?

たぶん
hoge "$aaa"
で空白入りの引数も渡ると思います。
angel
ぬし
会議室デビュー日: 2005/03/17
投稿数: 711
投稿日時: 2008-03-01 17:12
こんにちは。

今更ですが、$aaa と "$aaa" との違いを調べられると良いと思います。

関数内部の処理であれば、$1 と "$1" という使いわけも、ですね。
加えて、$*, $@ と "$*" と "$@" の違いも意識されると良いでしょう。
※"$*" に関しては、環境変数 IFS の影響を受けます。

詳しくは bash(1) のmanページ、「パラメータ」「特殊パラメータ」の項をご参照ください。
1

スキルアップ/キャリアアップ(JOB@IT)