美文网首页
shell脚本编程

shell脚本编程

作者: zhaoxin94 | 来源:发表于2020-06-01 15:47 被阅读0次

    一、构建基本脚本

    创建shell脚本文件

    1. 在创建shell脚本文件时,必须在文件的第一行指定要使用的shell。其格式为:
    #!/bin/bash
    
    1. 要让shell找到脚本,只需采取以下两种做法之一:
      • 将shell脚本文件所处的目录添加到PATH环境变量中
      • 在提示符中用绝对或相对文件路径来引用shell脚本文件
    2. 为名为test.sh的shell脚本添加执行权限:
    chmod u+x test.sh
    
    1. 运行shell脚本:
    # 方法1 
    sh test.sh  
    
    # 方法2 
    ./test.sh
    
    • 说明
      • 方法1 直接运行解释器,test.sh 作为 Shell 解释器的参数。此时 Shell 脚本就不需要指定解释器信息,第一行可以去掉。
      • 方法2 test.sh 作为可执行程序运行,Shell 脚本第一行一定要指定解释器。

    变量

    1. 环境变量
    • shell维护这一组环境变量,用来记录特定的系统信息。比如系统的名称、用户的系统ID(UID)、用户默认主目录等。
    • 可以用set命令来显式一份完整的当前环境变量列表。
    • 你可以在环境变量名称之前加上美元符($)来使用这些环境变量。
    1. 用户变量
    • 除了环境变量,shell脚本还允许在脚本中定义和使用自己的变量。
    • 用户变量可以是任何由字母、数字或下划线组成的文本字符串,长度不超过20个。用户变量区分大小写。
    • 定义变量:变量名=变量值,等号两侧不能有空格,变量名一般习惯用大写。
    • 使用变量:$变量名
    1. 命令替换
      shell脚本最有用的特性之一就是可以从命令输出中提取信息,并将其付给变量。
      有两种方法可以将命令输出赋给变量:
    • 反引号字符(`)
    • $()格式
    testing = `date`
    testing=$(date)
    

    执行数学运算

    • $[运算式]
    • expr m + n 注意 expr 运算符间要有空格
    • expr m - n
    • expr *,/,% 分别代表乘,除,取余
      实例:
    # $[],推荐 
    echo $[(2+3)*4]  
    
    # 使用 expr 
    TEMP=`expr 2 + 3` 
    echo `expr $TEMP \* 4`
    

    二、结构化命令

    条件语句

    1. 基本语法
    • if-then语句
    if [ 条件判断式 ]
    then
          commands
    fi
    
    • if-then-else语句
    if [ 条件判断式 ]
    then
          commands
    else
          commands
    fi
    
    • if-then-elif
    if [ 条件判断式1 ]
    then
          commands
    elif [ 条件判断式2 ]
    then
          commands
    fi    
    
    1. 条件判断
      [ condition ] 注意condition前后要有空格。非空返回0,0为 true,否则为 false 。
    • condition可以为三类条件:
      • 数值比较
      • 字符串比较
      • 文件比较


        数值比较
        字符串比较
        文件比较
    • 复合条件测试:
      • [ condition1 ] && [ condition2 ] 与运算
      • [condition 1] || [ condtion2 ] 或运算

    例子:

    if [ 'test01' = 'test' ] 
    then
         echo '等于' 
    fi  
    
    # 20是否大于10 
    if [ 20 -gt 10] 
    then
         echo '大于' 
    fi  
    
    # 是否存在文件/root/shell/a.txt 
    if [ -e /root/shell/a.txt ] 
    then
         echo '存在' 
    fi  
    
    if [ 'test02' = 'test02' ] && echo 'hello' || echo 'world' 
    then
         echo '条件满足,执行后面的语句' 
    fi
    

    运行结果:

    大于 
    hello 
    条件满足,执行后面的语句
    
    1. case命令
    case variable in
    pattern1 | pattern2) commands1;;
    pattern3) commands2;;
    *) default commands;;
    esac
    

    循环语句

    1. for命令
    # 语法1 (list就是多个值用空格分隔开)
    for var in list
    do
        commands
    done
    
    # 语法2 (C语言风格)
    for ((variable assignment; condition; iteration process))
    do
        commands
    done
    
    1. while命令
    while [ condition ]
    do
        commands
    done
    

    相关文章

      网友评论

          本文标题:shell脚本编程

          本文链接:https://www.haomeiwen.com/subject/drldzhtx.html