なぜ二重二重引用符が文字列を関数として実行するのですか?


-1

単純な関数は2つの引数を受け取り、追加してandから出力します。

function myprint(){ echo "$1 and $2";}

できます。

myprint  xx  yy
xx and yy

これは文字列であり、bashは個別に解析します。

"myprint  xx  yy"
bash: myprint  xx  yy: command not found

なぜ二重二重引用符が文字列を関数として実行するのですか?

""myprint  xx  yy""
xx and yy

回答:


3

実際、「二重二重引用符」はネストされていません。二重引用符が2回開かれ、すぐに閉じられます。

""myprint  xx  yy""
^^                  this is one pair of quotes with empty content
                 ^^ this is anther pair with empty content
  ^^^^^^^^^^^^^^^   this is not quoted at all

実際に""myprintは、次の名前のコマンドがあります:「myprint」と連結された空の文字列myprint。これは関数に解決されます。最後の引数は、空の文字列と連結された文字列「yy」です。

引用符で囲まないでくださいmyprint xx yy。元のコマンド全体がそのように動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.