質問が非常に単純で申し訳ありませんが、シェルスクリプトの初心者です。私はこのようなものを書こうとしています:
for i in {1..20}
do
curl "something $i ........ -d 'something "$i" something' "
done
問題は$i
、一重引用符の部分 '' 内の 2 番目が置き換えられていないことです。それを機能させるにはどうすればよいですか?
上記のように、パラメーターは一重引用符内では展開されないため、二重引用符を使用する必要があります。\
唯一のポイントは、すでに二重引用符で囲まれた文字列で発生するため、次のようにバックスラッシュ () でエスケープする必要があることです。
$ foo=バー $ eval "echo \"something \\\"$foo\\\"\"" 何か「バー」
\
これは 2 回展開されるため、最も内側の の前に3 つあることに注意してください"
(1 回は の引数をeval
評価するとき、もう 1 回は の引数を評価するときecho
) 。
これは、単一引用符内の変数''
が置き換えられていないためです。変数置換が必要な場合は、一重引用符を取り除く必要があります。
その変数を事前に初期化することができます
foo="something $i bla bla bla"
curl "something ... ${foo}something"
あなたの引用は正しくありません。$i
全体がすでに二重引用符で囲まれているため、秒を二重引用符で囲む必要はありません。
次のように変更します。
for i in {1..20}
do
curl "something $i ........ -d 'something $i something'"
done