echo $ 1 =引用符で囲まれていない空白文字列?

echo $ 1 =引用符で囲まれていない空白文字列?

スクリプト:

#!/bin/sh
echo $1

変数を送信したいのですが、引用符は使用しません。

例:

 ./script 1 2 3

上記はいいえ仕事(印刷する1 2 3
なぜなら1 2 3引用符の中にはありません。

私は引用符を使用したくありません。
これは、引用符の入力に時間がかかるためです。

うん可能

ベストアンサー1

スクリプトを次のように変更できます。

#!/bin/sh
echo "$*"

"$*"この文字列に渡されるすべての引数を含み、各引数の間にスペースで連結された単一の文字列に展開されます。だから

$ ./script 1 2 3
1 2 3

ただし、これはコマンドラインのスクリプト名の後に文字通り何も渡しません。それは不可能です。たとえば、複数のスペースは引数を区切るため、一緒に圧縮されます。

$ ./script 1  2 3
1 2 3

シェル特殊文字はまだ拡張されています。

$ ./script 2 * 2
2 bin dev etc home lib lost+found proc run sbin tmp sys usr var 2
$ ./script hello ; world
hello
bash: world: command not found

これを使用して、引用符なしでスクリプトに変数を渡すことはできません。まず、変数の値をスペースに分割してから、1つ以上のファイル名に一致するワイルドカードを展開し、最後に結果を連結するためです。

$ foo='2  *  2'
$ ./script $foo
2 bin dev etc home lib lost+found proc run sbin tmp sys usr var 2

おすすめ記事