您的位置:首页 > 运维架构 > Shell

Linux Shell脚本教程

2016-04-13 17:38 399 查看
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

grep:grep –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. break和continue命令

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 获取这三个参数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: