この記事を検討してください。テスト:
#!/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
- 2つの引数
./test """A B"""
- empty string接続AspaceBと接続を持つパラメータempty string
./test """"A B""""
- 2つの引数
- まず、次のものempty stringにempty string接続してください。A
- 第二に、B接続とempty string接続empty string
- 2つの引数
echo
注:パラメータに複数のスペースを使用すると、他の結果が表示されます。これは、echoが引数を単一のスペースに連結するためです。
$ echo "A B"
A B
$ echo ""A B""
A B
$ echo """A B"""
A B
$ echo """"A B""""
A B