2012-04-12 5 views
0

私は自分の.bashrcを読んと

cd "[email protected]" && some_other_function 

以下の$ @が正確に何を意味するのに気づいていますか?

+0

[unix shell programming special variables](http://stackoverflow.com/questions/3206312/unix-shell-programming-special-variables)を参照してください。 –

答えて

5

"[email protected]"は、引用符で囲まれたコマンドラインパラメータのリストに展開されます。それは、"$*"から微妙に異なっている:

set "a b" c d 

"$*"所与

"a b c d" 

に展開"[email protected]"

"a b" c d 

及び$*(又は[email protected])展開に展開に対し

$*"は単一の文字列を生成しますが、"[email protected]"は元の引用を複製し、$*は引用を失います。

1

man bashから:


@位置パラメータに展開されます。展開が二重引用符で囲まれると、各パラメータは別の単語に展開されます。つまり、 "$ @"は "$ 1" "$ 2"に相当します...単語内で二重引用符で囲まれた展開が行われると、最初のパラメータの展開が元の単語の先頭部分と結合され、展開最後のパラメータの最後の部分が元の単語の最後の部分と結合されます。

1

$ @は、スクリプトに渡されるすべての引数を表します。

あなたは、このようにfoo.shというスクリプトを呼び出す場合:[email protected]が空で、[email protected]がないときに

> boo goo loo 
0

:このなります @の出力$

$> foo.sh boo goo loo 

を空の文字列に展開します。それは完全に取り除かれます。だからあなたのテストではありません。

[ -n "" ] 

ではなく、むしろ:今

[ -n ] 

-nは、オペレータが、いつものように、真のテストだけで非空の文字列、ではありません。

関連する問題