我需要将变量插入到字符串中以创建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正在被相应的数组元素替换,但$ year只留下一个空格。有人可以解释为什么以及如何获取看起来像这样的网址:url =“https://www.my-website.com/place/PdfLinkServlet?file=\place\place_id\099%2Bno-display\2015_place_id.pdf”
答案 0 :(得分:4)
因为变量名称可以合法地包含_
个字符,所以Bash无法知道您想要$year
而不是$year_
。要消除歧义,可以使用括号中的变量名称,如下所示:
${year}_${i}.pdf
在你将变量扩展推到一起的任何时候都这样做是不错的做法。正如你所看到的,它实际上也使它们在人眼中更加突出。
答案 1 :(得分:1)
改为使用${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
答案 2 :(得分:0)
这是一个也很好的小黑客。我经常将它用于我的项目。在变量年份中将_添加到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