引用された引数を解析する Bash スクリプト

引用された引数を解析する Bash スクリプト

この記事を検討してください。テスト:

#!/bin/bash
echo $1

次のコマンドと呼び出し:

$ echo "A B"
A B
$ echo ""A B""
A B
$ echo """A B"""
A B
$ echo """A B"""
A B

$ ./test "A B"
A B
$ ./test ""A B""
A
$ ./test """A B"""
A B
$ ./test """"A B""""
A

私が電話した理由を説明できる人はいますか?テスト動作はコマンドとは異なります。エコそれとも関連文書を指しますか?

答え1

echo直列に接続されているためみんなパラメータはそれを印刷し、スクリプトは次のように制限されます。最初議論。スクリプトでおよびを使用する必要があります"$@"$1

テストに提供するパラメータを見てみましょう。

  • ./test "A B"
    • パラメータ1個、文字列3個AspaceB
  • ./test ""A B""
    • 2つの引数
      • まずempty string接続してくださいA
      • 第二に、Bつながるempty string
  • ./test """A B"""
    • empty string接続AspaceBと接続を持つパラメータempty string
  • ./test """"A B""""
    • 2つの引数
      • まず、次のものempty stringempty string接続してください。A
      • 第二に、B接続とempty string接続empty string

echo注:パラメータに複数のスペースを使用すると、他の結果が表示されます。これは、echoが引数を単一のスペースに連結するためです。

$ echo "A   B"
A   B
$ echo ""A   B""
A B
$ echo """A   B"""
A   B
$ echo """"A   B""""
A B

関連情報