2012-10-24 56 views
1

對不起,如果問題非常簡單,但是是shell腳本的新手。 我想寫的東西是這樣的:bash:替換''內的變量值'

for i in {1..20} 
do 
    curl "something $i ........ -d 'something "$i" something' " 
done 

的問題是,單引號部分'內的第二$i沒有被取代。應該做些什麼來實現它的工作?

回答

3

正如上面所說的,參數並不單引號內展開,您必須使用雙引號。唯一的一點是,因爲它在一個已經雙引號字符串時,你有一個反斜槓(\)逃避他們,就像這樣:

 
$ foo=bar 
$ eval "echo \"something \\\"$foo\\\"\"" 
something "bar" 

注意,有三個\之前最裏面",如這將被擴展兩次(一次評估eval的參數和一次評估echo的參數時)

1

這是因爲單引號''內部的變量沒有被替換。如果你想要變量替換,你需要擺脫單引號。

您庫侖可能預先初始化變量

foo="something $i bla bla bla" 
curl "something ... ${foo}something" 
+1

即使整個語句是用「」括起來的字符串? – Rndm

+0

是的,變量替換在雙引號''「'中起作用。我沒有看到這個問題。正如我所提到的,只有單引號內的變量不會被替換。 – mana

0

你的報價是不正確的。在第二個$i附近不需要雙引號,因爲整件事情已經用雙引號括起來了。

將其更改爲以下:

for i in {1..20} 
do 
    curl "something $i ........ -d 'something $i something'" 
done