shell学习与使用,边学边用之一!
1.使用wget和shell脚本下载一系列路路径有规律的资源:
我想下载ubuntu社区杂志fullcircle但是不想一个一个的点击进去然后在下载。
于是我想到用wget工具加上shell脚本来做。
其实我几乎没写过shell脚本。所起没写一行代码读会先测试下。
最后得到的脚本如下:
#!/bin/bash issue="http://dl.fullcirclemagazine.org/issue" country=_en for index in `seq 1 53`; do wget -c $issue$index$country.pdf; done
2.迭代
上面的for循环才terminal上测试如下,在加上另外两中使用生成列表的方法:
changeyi@changeyi-laptop:~$ for x in {1..3};do echo $x;done 1 2 3 changeyi@changeyi-laptop:~$ for x in `seq 1 3`; do echo $x;done 1 2 3 changeyi@changeyi-laptop:~$ initty=/dev/tty[1-8];for tty in $initty;do echo $tty;done; /dev/tty1 /dev/tty2 /dev/tty3 /dev/tty4 /dev/tty5 /dev/tty6 /dev/tty7 /dev/tty8 changeyi@changeyi-laptop:~$
3.字符串的连接:
第一项的代码中有一处地方值得注意:
wget -c $issue$index$country.pdf;
如果像下面一样使用的话会错:
dl_issue=$issue$index$country.pdf; wget -c $dl_issue;
报错如下:
引用
./try.sh:line7:dl_issue:找不到命令
wget:未指定URL
用法:wget[选项]...[URL]...
打印dl_issue变量看看,如下:
changeyi@changeyi-laptop:~$ ./try.sh ./try.sh: line 7: dl_issue:找不到命令 ./try.sh: line 7: dl_issue:找不到命令 ./try.sh: line 7: dl_issue:找不到命令 changeyi@changeyi-laptop:~$ cat try.sh #!/bin/bash issue="http://dl.fullcirclemagazine.org/issue" country=_en for index in `seq 1 3`; do dl_issue = $issue$index$country.pdf; echo $dl_issue done changeyi@changeyi-laptop:~$
直接echo如下,看来是赋值的问题啊:
changeyi@changeyi-laptop:~$ ./try.sh http://dl.fullcirclemagazine.org/issue1_en.pdf http://dl.fullcirclemagazine.org/issue2_en.pdf http://dl.fullcirclemagazine.org/issue3_en.pdf changeyi@changeyi-laptop:~$ cat try.sh #!/bin/bash issue="http://dl.fullcirclemagazine.org/issue"; country="_en"; for index in `seq 1 3`; do echo "$issue$index$country.pdf"; done changeyi@changeyi-laptop:~$
未完待续……