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:~$

未完待续……