使用此代码:
for i in {10000..99999}
do
for j in {0..99999}
do
for k in {0..999}
do
number="$i$j$k"
url="$number/$number_LNN_0001.png"
wget mywebsite.com/$url
done
done
done
从我的服务器取回我的文件,它给出了这个奇怪的输出:
--2014-12-28 20:52:45-- http://www.mywebsite.com/1000000/.png
2014-12-28 20:52:45 ERROR 404: Not Found.
--2014-12-28 20:52:45-- http://www.mywebsite.com/1000001/.png
2014-12-28 20:52:45 ERROR 404: Not Found.
我不明白为什么不是http://www.mywebsite.com/1000001/1000001_LNN_0001.png
答案 0 :(得分:3)
您需要使用
url=$number/${number}_LNN_0001.png
wget "http://mywebsite.com/$url"
否则,_
(和后续字符)将被解析为变量名称的一部分。 (对于第一个$number
,这不是必需的,因为/
不是shell变量名中的有效字符。)
答案 1 :(得分:1)
因为这个
$numbers_LNN_0001
在Bash中创建一个完全正确的变量 name - 它在你的脚本中不存在。
如果要将变量值与其他字符串组合在一起但变量周围没有空格,则必须使用${NAME}
:
url="$number/${number}s_LNN_0001.png"
有关变量的更多信息:http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion
当参数是具有多个数字的位置参数时,或者当参数后跟一个不被解释为其名称一部分的字符时,需要括号。