以下は、空の変数を一重引用符で置き換えたスクリプトです。変数が空でない場合、正しい置換があります。bashの空変数のコマンド置換により、一重引用符につながります。
$ set -x; aa=""; bb=`curl "$aa" -vvv`; set +x
+ aa=
++ curl '' -vvv
注目すべきことは、空の変数の代わりに一重引用符です。
変数が空でない場合は、すべてが同様に正常に動作します:
$ set -x; aa="google.com"; bb=`curl "$aa" -vvv`; set +x
+ aa=google.com
++ curl google.com -vvv
Q1:なぜ空の変数または導入された単一引用符が得られた空間を持つ変数はありますか? Q2:空の変数の代わりに一重引用符を使用しないようにするにはどうすればよいですか?
ここで二重引用符を削除できますが、すべて正常に機能しますが、スペースがあればそれを保存する必要があります。
ありがとうございました。
ありがとうございます。なぜカールは、空の引数または実際の引数を持つ空間を解釈するのだろうか?それを無視してはいけませんか?これはカールの問題かシェルの問題ですか? – Khanna111
空の文字列を引数として渡すと、それが渡される引数になります。なぜカールはそれを無視する必要がありますか?これはシェルの問題でもカールの問題でもありません。それは使用エラーです。 curlに空の引数を渡していますが、curl(IMOは正しく)はその引数を特別な方法で扱いませんが、空の文字列をURLとして使用しようとします。 –