對不起,如果問題非常簡單,但是是shell腳本的新手。 我想寫的東西是這樣的:bash:替換''內的變量值'
for i in {1..20}
do
curl "something $i ........ -d 'something "$i" something' "
done
的問題是,單引號部分'內的第二$i
沒有被取代。應該做些什麼來實現它的工作?
對不起,如果問題非常簡單,但是是shell腳本的新手。 我想寫的東西是這樣的:bash:替換''內的變量值'
for i in {1..20}
do
curl "something $i ........ -d 'something "$i" something' "
done
的問題是,單引號部分'內的第二$i
沒有被取代。應該做些什麼來實現它的工作?
正如上面所說的,參數並不單引號內展開,您必須使用雙引號。唯一的一點是,因爲它在一個已經雙引號字符串時,你有一個反斜槓(\
)逃避他們,就像這樣:
$ foo=bar $ eval "echo \"something \\\"$foo\\\"\"" something "bar"
注意,有三個\
之前最裏面"
,如這將被擴展兩次(一次評估eval
的參數和一次評估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
即使整個語句是用「」括起來的字符串? – Rndm
是的,變量替換在雙引號''「'中起作用。我沒有看到這個問題。正如我所提到的,只有單引號內的變量不會被替換。 – mana