shell编程

作者: Summer2077 | 来源:发表于2020-09-21 12:09 被阅读0次

    shell是一个命令解释器

    shell脚本的执行方式:

    一般以.sh 结尾

    开头:

    #/bin/bash
    

    方式1:给出文件权限(推荐)

    权限:

    chmod 744 myShell.sh
    

    执行相对路径,绝对路径都可以

    方式2:(sh+脚本)不推荐

    sh ./myShell.sh
    

    shell的变量:

    shell中的变量分为 系统变量用户自定义变量

    1.系统变量

    $HOME
    $PWD
    $SHELL
    $USER
    ...
    

    2.显示当前shell中的所有变量

    set
    

    shell变量的定义

    定义变量:变量 = 值
    撤销变量: unset 变量
    静态变量:readonly 变量 不能usnet

    #显示行号
    :set nu
    

    变量定义的规则:

    • 数字字母下滑线组成,数字不可以开头
    • 等号两侧不能有空格
    • 变量名习惯使用大写

    将命令的返回值返回赋值给变量:

    A=`res`
    A=$(res)   推荐使用
    

    设置环境变量:

    export 变量名=变量值 (将shell变量输出)
    source 配置文件  (使配置文件生效)
    echo $变量名
    

    多行注释:

    :<<!
    .....
    !
    

    位置参数变量:

    $0 $1 $2 ... ${10} ${11}
    $*  获取所有参数  把参数看为一个整体
    $@  获取所有参数  区别对待参数
    $#  参数的个数
    

    预定义变量:

    $$   #当前进程号
    $!   #后台运行最后一个进程进程号
    $?   #脚本执行状态
    

    运算符的使用:

    $((运算符))   
    $[运算符]  (推荐)
    `expr m + n`
    
    • 计算 (2+3)*4

    条件判断:

    基本语法:

    [ condition ] (condition前后有空格)

    判断语句:

    1.两个整数的比较:

    = 字符串
    -lt <
    -le <=
    -eq ==
    -gt >
    -ge >=
    -ne !=
    

    2.文件权限

    -r 读权限
    -w 写权限
    -x 执行权限
    

    3.文件类别

    -f 文件存在并是一个常规文件
    -e 文件存在
    -d 文件存在并是一个目录
    

    流程控制

    if判断语句

    # else if
    if [ condition ]
    then
        程序
    elif [ condition ]
        程序
    fi
    
    # else 
    if [ condition ]
    then
        程序
    else
        程序
    fi
    

    case语句

    #!/bin/bash
    case $1 in
    "1")
            echo "周一"
    ;;
    "2")
            echo "周二"
    ;;
    *)
            echo "other"
    esac
    

    for 循环

    #类似于java中的增强for循环
    for 变量 in 值1 值2 值3
        do
            程序
        done
        
    #一般的for循环
    for ((初始值;循环控制条件;变量变化))
    do
        程序
    done
    

    例子1:

    #!/bin/bash
    #$*
    num1=$*
    for i in "$*"
    do
            echo "numebr is $i"
    done
    
    #$@
    num2=$@
    for i in  "$@"
    do
            echo "number is $i"
    done
    

    例子2:

    sum=0
    for (( i=0 ; i<10 ; i++ ))
    do
            sum=$[$sum+$i]
    done
    echo "$sum"
    

    while循环

    while [ condition ]
    do 
        程序
    done
    

    例子1:

    #!/bin/bash
    i=0
    sum=0
    while [ $i -le $1 ]
    do
            sum=$[$i+$sum]
            i=$[$i+1]
    done
    echo "sum = $sum"
    
    

    读取控制台的输入:

    read (选项) (参数)
    -p: 指定读取时式的提示符
    -t: 指定等待时间
    

    例子:

    #!/bin/bash
    
    

    函数

    系统函数

    basename

    功能:返回完整的路径最后/的部分,常用于获取文件名

    basename[pathname][suffix]
    basename[string][suffix]
    

    dirname返回路径部分

    dirname[stirng][suffix]
    

    自定义函数

    function funname()
    {
    action;
    return int;
    }
    

    例子:

    #!/bin/bash
    function getsum(){
    sum=$[$a+$b]
    echo "$sum"
    }
    
    read -p "输入数字a" a
    read -p "输入数字b" b
    getsum $a $b
    
    

    相关文章

      网友评论

        本文标题:shell编程

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