答えて
[email protected]
はスクリプトに渡されたパラメータのすべてです。
例えば、./someScript.sh foo bar
を呼び出した場合、[email protected]
はfoo bar
に等しくなります。
そうした場合:
./someScript.sh foo bar
、その後someScript.sh
参照の内側:
umbrella_corp_options "[email protected]"
これは空白でパラメータを取ることができるように、二重引用符で囲まれた個々のパラメータでumbrella_corp_options
に渡されます発信者から送信し、それらを渡します。
@
ものから、位置パラメータに展開。展開が二重引用符で囲まれると、各パラメータは別の単語に展開されます。つまり、 "$ @"は "$ 1" "$ 2"に相当します。単語内で二重引用符で囲まれた展開が行われると、最初のパラメータの展開が元の単語の先頭部分と結合され、最後のパラメータの拡張は元の単語の最後の部分と結合されます。位置パラメータがない場合、「$ @」と$ @は何も展開しません(つまり、それらは削除されます)。
、ほとんどの場合、純粋[email protected]
手段の使用ほとんどの場合、それは単語の区切りとし、引数にスペースや他の文字との問題につながるため、「することができますようにハードとしてのプログラマを傷つけます」。
すべてのケースの99%(推定)で、"
に囲む必要があります。"[email protected]"
は、引数を確実に反復処理するために使用できるものです。
for a in "[email protected]"; do something_with "$a"; done
[email protected]
$*
とほぼ同じである、両方の「すべてのコマンドライン引数」を意味します。彼らはしばしば、すべての引数を別のプログラムに渡すだけでよく(したがって、他のプログラムの周りにラッパーを形成します)。
引数にスペースが含まれていると、2つの構文の違いが表示されます(例:)と二重引用符で[email protected]
を置く:
wrappedProgram "[email protected]"
# ^^^ this is correct and will hand over all arguments in the way
# we received them, i. e. as several arguments, each of them
# containing all the spaces and other uglinesses they have.
wrappedProgram "$*"
# ^^^ this will hand over exactly one argument, containing all
# original arguments, separated by single spaces.
wrappedProgram $*
# ^^^ this will join all arguments by single spaces as well and
# will then split the string as the shell does on the command
# line, thus it will split an argument containing spaces into
# several arguments.
例:
wrapper "one two three" four five "six seven"
を呼ぶことになります:=
"[email protected]": wrappedProgram "one two three" four five "six seven"
"$*": wrappedProgram "one two three four five six seven"
$*: wrappedProgram one two three four five six seven
IFSを使用した$ *の副作用については、同じではなく、マンページも$ *の副作用があります。これは必ずしもスペースではありません。 (両者が同じであれば、おそらく互換性以外の点はありません)。 –
そうではありません。そして、私は次のように2行を言った: "2人の違い..."短い文章を読みやすくするために、読者は複数の文章を読まなければならない。 -/ – Alfe
Alfe、Christofferの挿入1つの言葉は、「やや」、差異をなくし、敏感さや読みやすさを犠牲にすることはありませんでした。実際、私はこの差異の微妙な強調のために、(あなたが受けたものとは対照的に)この答えをアップアップしました。 ;) –
これらは、コマンドライン引数ですすべての引数を文字列リストに格納します
$*
=店舗単一の文字列
$#
など、すべての引数=店舗引数の数
あなたは '$ @'と '$ *'を後方に持っています – iruvar
- 1. シェルスクリプトのusage()とは何ですか?
- 2. 次のシェルスクリプトは何ですか
- 3. シェルスクリプトの$ {varname}と$ varnameの違いは何ですか?
- 4. シェルスクリプト内の$ {variable_name}と$ variable_nameの違いは何ですか?
- 5. ハドソンとシェルスクリプトの違いは何ですか?
- 6. シェルスクリプトで "$$"とは何を意味しますか?
- 7. 「$?」は何ですか?シェルスクリプトの意味ですか?
- 8. シェルスクリプトで$ @と$ *の違いは何ですか?私<code>script.sh</code>で
- 9. Windowsシェルスクリプトで使用できるツールと言語は何ですか?
- 10. シェルスクリプトで実行しない理由は何ですか?
- 11. シェルスクリプトでパスをエクスポートすることの意義は何ですか?
- 12. シェルスクリプトと私のシェルスクリプトではsudo
- 13. このシェルスクリプトは何をしますか?
- 14. シェルスクリプトのif条件付き平均の-fは何ですか?
- 15. この行はシェルスクリプトで何を意味しますか?
- 16. シェルスクリプトの "#!/ bin/sh"の使用/意味は何ですか?
- 17. シェルスクリプトで "=〜"演算子は何をしますか?
- 18. UNIXシェルスクリプトで "#!/ bin/sh"という行は何を意味していますか?
- 19. Bourneシェルスクリプト(.sh)内でPHP cronジョブをラッピングする利点は何ですか?
- 20. コマンドは、シェルスクリプトで
- 21. シェルスクリプトで 'exit 0'とはどういう意味ですか?
- 22. シェルスクリプトを使用してパブリック静的メンバーメソッド(PHPクラス)を呼び出す方法と、「phpr」とは何ですか?
- 23. この行 "BUILD_TARGET = $ {1:-none}"はシェルスクリプトで何を意味しますか?
- 24. シェルスクリプト内の変数の前にある「#」の意味は何ですか?
- 25. 何かをエクスポートするこの基本的なシェルスクリプトで何が問題なのですか
- 26. jobConfクラスとは何ですか?それは何ですか?
- 27. @privateとは何ですか?その用途は何ですか?
- 28. IPM.Noteとは何ですか?その用途は何ですか?
- 29. _applyプラグインとは何ですか: 'com.google.gms.google-services'_は何ですか?
- 30. Mongoclientとは何ですか?その目的は何ですか?
([$ @をやbashで$ @の、について説明を探して何である]の可能重複http://stackoverflow.com/questions/3898665/what-is-for-an-bash-in-in-bash) – l0b0