Bash - 如何转义 URL 中的下划线

Bash - how to escape underscore in URL

我在 bash on macOS 中有一个小脚本,我在其中使用了一个数组,其中的日期格式为 yyyymmdd.

,例如 19000105

在该脚本中,我将该数组的日期解析为一个循环,如:

for i in "${list[@]}"; do
    wget -A pdf -nc -E -nd --no-check-certificate URL$iURL$i_tif.pdf
done

其中 wget 打开一个 URL 下载 pdf。为了使其正常工作,我需要将日期两次添加到 URL 的不同部分。

然而,URL 在我插入日期后的某一点包含一个下划线,它需要看起来像这样:19000105_tif/jpegs/.

我以为我需要像 {$i}_tif/ 这样添加大括号来转义,但是 URL 被解析为 %7B18500105%7D_tif/,这是错误的。

如果我像 $i_tif/ 一样保留大括号,URL 会像 /jpegs/ 一样被解析,其中日期和之前的 tif 部分根本不会被解析完全消失了。

如何在 URL 之后正确添加带下划线的日期?

使用 ${i} 而不是 $i 应该可以解决这个问题