setコマンドに特別なワイルドカード文字を渡す

setコマンドに特別なワイルドカード文字を渡す

「set」コマンドを使用して特殊記号「*」に変数を設定したいと思います。

$ Q='A * B'
$ set -- $Q
$ echo "$1 $2 $3"

私は「A*B」を期待した

もちろん、アスタリスクは特別なシンボルなので、期待どおりに機能しません。

私は試した:

$ Q='A \* B'
$ Q='A "*" B'

しかし、次に渡されます。$2

期待していたA \* Bよりもそんなことを得たA "*" BA * B

この式をsetコマンドに正しく渡すには?

ベストアンサー1

奇妙な動作を防ぐには、常に変数を引用する必要があります。したがって、set -- "Q"ただset -- $Q

$ Q='A * B'
$ set -- "$Q"
$ echo "$1 $2 $3"
A * B

おすすめ記事