簡體   English   中英

在Bash腳本中將變量包括在字符串中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM