zoukankan      html  css  js  c++  java
  • shell

    1. shell脚本规范

    1. 脚本的开头要有解释器
    2. 脚本必须放在同一个目录
    3. 脚本必须以.sh结尾
    4. 脚本有作者信息和脚本信息

    [root@clsn scripts]# cat  scripts_test.sh 
    #!/bin/bash
    ##############################################################
    # File Name: scripts_test.sh
    # Version: V1.0
    # Author: clsn
    # Organization: http://blog.znix.top
    # Created Time : 2017-12-04 11:39:57
    # Description:  First scripts file
    ##############################################################

    5. 脚本注释尽量不用中文

    6) 代码书写优秀习惯

      a、成对的内容一次性写出来,防止遗漏,如[  ]、' '、" "等

      b、[  ]两端要有空格,先输入[  ],退格,输入2个空格,再退格写。

      c、流程控制语句一次书写完,再添加内容。(if 条件 ; then  内容;fi)ddd

      d、通过缩进让代码易读。

      f、脚本中的引号都是英文状态下的引号,其他字符也是英文状态。


    7. 定时任务必须加执行权限

    2. 变量内容的定义


    1. 字符串定义方式 name="I am oldboy" 加双引号 解析内部的变量
    2. 数字的定义方式 age=1834 必须是连续的数字
    3. 命令的定义方式 time=`date` 反引号定义命令
    time=$(date) $() 定义命令
    time='date' 所见即所

    3. 特殊位置变量

    1. $0 脚本的名称,如果全路径执行,则名称带全路径,basename获取脚本名称 
    2. $n 代表的脚本的第n个参数 $0被脚本名占用 从$1开始 $10后需要加{} 
    3. $# 代表了脚本传参的总个数 [ $# -ne 2 ] && echo "请输入两个参数" && exit 1 
    4. $* 代表传参的参数 如果不加双引号和$@相同 加了双引号 则所有的参数视为单个字符串 nameoldboyzsls 在脚本中无区别 for循环
    5. $@ 代表传参的参数 如果不加双引号和$*相同 加了双引号 则所有的参数视为独立的参数 name oldboy zs ls 在脚本五区别
    6. $? 上一条命令返回的结果,0为成功 非0失败 *****
    7. $$ 获取脚本的PID echo $$ > /tmp/cutlog.pid ***
    8. $! 上一个在后台运行脚本的PID
    9. $_ 获取最后一个东东 ESC .

    4条件表达式

    test -f file 是否为文件
    [ -f file ] 是否为文件
    [ -d dir ] 是否为目录
    [ -e file ] 是否存在
    [ -r file ] 文件是否可读
    [ -w file ] 文件是否可写
    [ -x file ] 文件是否可执行

    [ -s file ] 判断文件是否不为空;[ ! -s ] 判断文件是否

    -z  字符串为空,为真,否则为假
    
    -n  反过来,字符串有内容,就为真,否则为假
    
    -z 用法
    
    [root@yun:/server/scripts]# test -z "" && echo ok || echo no
    ok
    [root@yun:/server/scripts]# test -z " " && echo ok || echo no
    no
    
    -n 用法
    
    [root@yun:/server/scripts]# test -n " " && echo ok || echo no
    ok
    [root@yun:/server/scripts]# test -n "" && echo ok || echo no
    no

    test

    A 条件  &&  B 条件  ,当A条件成立,并且执行B条件

    A 条件  || B 条件  ,当A条件不成立的时候,才会执行B 条件

    [root@yun:/server/scripts]# test -e 1.txt && echo '文件已存在'
    [root@yun:/server/scripts]# test -e 1.txt && echo '文件已存在'||touch 1.txt
    [root@yun:/server/scripts]# test -e 1.txt && echo '文件已存在'||touch 1.txt
    文件已存在

     

  • 相关阅读:
    centos6.5安装mysql5.7.20
    redis错误总结
    批量杀死MySQL连接的四种方法详解
    VMware虚拟机宿主机与虚拟机通讯慢解决方法
    linux下ssh/scp无密钥登陆方法
    天兔3.8安装 centos7
    《TensorFlow+Keras自然语言处理实战》已出版
    几本技术图书资源下载
    2020年上半年新书
    《Neo4j 图数据库扩展指南:APOC和ALGO》
  • 原文地址:https://www.cnblogs.com/bidad/p/11681450.html
Copyright © 2011-2022 走看看