Linux Shell脚本教程

Linux Shell脚本教程


.背景

单纯的PHP也可以实现断点续传下载,但单纯的PHP实现代码会比较复杂,而且没有多线程下载,速度会比较慢。所以放弃PHP下载的方案,用linux下的axel命令实现。

 

.shell教程

1. 变量定义。

使用变量,最好都加 {} 边界符


2.
注释

没有多行注释,只能每一行加一个#号。但可以通过其它变通的方法实行多行注释,在编辑器不会着色,有兴趣的自行搜索。

 

3. 调用linux命令

  不需要返回直接调用的:cd ${path}/cdn_log_download/echo/;rm -f $f_name

  有返回的:del_month=`date +"%Y-%m" -d "-2month"`

  使用命令实现算术运算:length=`expr ${#file_name_arr[*]} - 1`

  使用命令实现关系运算:$val -eq 0

  使用tr 命令分割字符:($(echo $download_list | tr "||" "\n"))

 

 例子:

 将所以上上个月下载日志文件删除

  del_list=`cd /home/domaininfo/cdn_log_download/echo/;ls --full-time | awk '{ print $6,$9 }' | grep "2015-12"`

 通道符:|

  awk

  grepgrep –rn “echo” *

 

4. 调用PHP,并传参

  download_list=`cd ${path};/usr/bin/php cdn_log_download.php 'get_list'` 

 

5. 数组

  定义多个数组,可以通过空格和换行符来实现

  读取数组:f_name=${del_arr[$i]}

获取数组长度:${#del_arr[*]}

 

6. while循环

 

7. if else语句

 

8. breakcontinue命令

 

9. 判断文件夹或文件是否存在

if [ ! -f "$echo_path" ]

if [ ! -d "$save_file_path" ]

 

10. 输出重定向

$ who > users 覆盖

$ who >> users 追加

 

11. 文件名定义和执行

  xxx.sh

  ./xxx.sh

 

********************************* 2016-07-06 **********************************

1. 提示没有权限
chmod +x test.sh

********************************* 2017-06-26 **********************************

怎样给 shell 传参?

$ ./test.sh 1 2 3

在 shell 代码里面,通过 $0,$1,$2 获取这三个参数

 

 

posted @ 2016-04-13 17:38  chy1000  阅读(373)  评论(0编辑  收藏  举报