[英]Including Variables in Strings, Bash Scripting
我需要將變量插入字符串中以創建URL。 現在,我正在遍歷值數組並將它們插入字符串中。
year="2015"
for i in "${array[@]}"
do
url="https://www.my-website.com/place/PdfLinkServlet?file=\place\\$i\099%2Bno-display\\$year_$i.pdf"
echo $url
done
$ i被替換為相應的array元素,但是$ year只是留有空白。 有人可以解釋為什么以及如何獲得如下網址:url =“ https://www.my-website.com/place/PdfLinkServlet?file=\\place\\place_id\\099%2Bno-display\\2015_place_id.pdf”
因為變量名稱可以合法地包含_
字符,所以Bash無法知道您想要的是$year
而不是$year_
。 為了消除歧義,可以使用如下所示將變量名稱括在方括號中:
${year}_${i}.pdf
每當您將變量擴展一起推到一起時,這樣做都是不錯的做法。 如您所見,它實際上也使它們在人眼中更加突出。
使用${var}
代替:
year="2015"
for i in "${array[@]}"; do
url="https://www.my-website.com/place/PdfLinkServlet?file=place${i}099%2Bno-display${year}_${i}.pdf"
echo "$url"
done
這里有一個小技巧,也很好用。 而且我經常在項目中使用它。 在變量year中將_添加到2015年末,例如year="2015_"
然后從url變量中刪除_,然后將兩個變量i和year結合在一起,例如$year$i
我添加了一個任意數組,以便腳本可以運行。
#!/bin/bash
year="2015_"
array=(web03 web04 web05 web06 web07)
for i in "${array[@]}";
do
url="https://www.my-website.com/place/PdfLinkServlet?file=\place\\$i\099%2Bno-display\\$year$i.pdf"
echo $url
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.