zoukankan      html  css  js  c++  java
  • 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 "||" " "))

     

     例子:

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

      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 获取这三个参数
  • 相关阅读:
    BZOJ1568:[JSOI2008]Blue Mary开公司
    HDU4348:To the moon
    洛谷【P3437】[POI2006]TET-Tetris 3D
    AtCoder Regular Contest 072 E:Alice in linear land
    AtCoder Grand Contest 014 D:Black and White Tree
    洛谷【P2664】树上游戏
    浅谈树分治
    BZOJ3784:树上的路径
    BZOJ2006:[NOI2010]超级钢琴
    BZOJ3648:寝室管理
  • 原文地址:https://www.cnblogs.com/chy1000/p/5388006.html
Copyright © 2011-2022 走看看