美文网首页
shell入门

shell入门

作者: 追梦_life | 来源:发表于2020-11-18 11:36 被阅读0次

    1、打开shell世界的大门

    #!/bin/bash
    echo 'Hello World!'
    

    2、变量的最基本使用,定义一个name变量并输出

    #!/bin/bash
    name='Shaw Lee'
    echo "my name is $name"
    

    3、定义一个变量,输出当前时间,要求格式为“年-月-日 时:分:秒”

    #!/bin/bash
    dt=`date +'%F %T'` # 注意这里要用反引号(``)包括
    echo $dt
    

    4、只读变量(了解)

    语法:readonly 变量名

    #!/bin/bash
    num=10
    readonly num
    num=20
    echo $num
    # 输出:10
    

    5、接受用户输入

    语法:read -p 提示信息 变量名

    案例:编写一个脚本,要求执行之后提示用户输入文件的名称(路径),然后自动为用户创建该文件

    #!/bin/bash
    read -p 请输入需要创建的文件路径: filepath
    touch $filepath
    echo '文件创建成功'
    ls -l $filepath
    

    6、删除变量(了解)

    语法:unset 变量名

    #!/bin/bash
    b=20
    echo $b
    unset b
    echo $b
    

    7、条件判断语句

    #!/bin/bash
    read -p 请输入你的分数: goal
    
    echo '你的评级是:'
    
    if [ $goal -lt 60 ]
    then
        echo '    不及格'
    elif [ $goal -lt 80 ]
    then
        echo '    良好'
    else
        echo '    优秀'
    fi
    

    8、算数运算符

    #!/bin/bash
    a=10
    b=20
    echo "a=$a"
    echo "b=$b"
    echo ""
    echo 'a+b='`expr $a + $b`
    echo 'a-b='`expr $a - $b`
    echo 'a*b='`expr $a \* $b`
    echo 'b/a='`expr $b / $a`
    echo 'b%a='`expr $b % $a`
    
    # 判断是否相等
    if [ $a == $b ]
    then
        echo 'a等于b'
    else
        echo 'a不等于b'
    fi
    
    # 判断是否不相等
    if [ $a != $b ]
    then
        echo 'a不等于b'
    else
        echo 'a等于b'
    fi
    

    9、关系运算符

    关系运算符只支持数字,不支持字符串,除非字符串的值是数字

    运算符 英文解释 说明 语法
    -eq equal 检测两个数是否相等相等返回true [ a -eqb ]
    -ne not equal 检测两个数是否相等不相等返回true [ a -neb ]
    -gt great than 检测左边的数是否大于右边的数,如果是,返回true [ a -gtb ]
    -lt less than 检测左边的数是否小于右边的数,如果是,返回true [ a -ltb ]
    -ge great than or equal 检测左边的数是否大于等于右边的数,如果是,返回true [ a -geb ]
    -le less than or equal 检测左边的数是否小于等于右边的数,如果是,返回true [ a -leb ]
    #!/bin/bash
    a=20
    b=10
    
    echo "a=$a"
    echo "b=$b"
    
    echo
    
    # 判断相等
    if [ $a -eq $b ]
    then
        echo 'a=b'
    else
        echo 'a≠b'
    fi
    
    # 判断不相等
    if [ $a -ne $b ]
    then
        echo 'a≠b'
    else
        echo 'a=b'
    fi
    
    # 判断是否大于
    if [ $a -gt $b ]
    then
        echo 'a>b'
    else
        echo 'a<b'
    fi
    
    # 判断是否小于
    if [ $a -lt $b ]
    then
        echo 'a<b'
    else
        echo 'a>b'
    fi
    
    # 判断是否大于等于
    if [ $a -ge $b ]
    then
        echo 'a>=b'
    else
        echo 'a<b'
    fi
    
    # 判断是否小于等于
    if [ $a -le $b ]
    then
        echo 'a<=b'
    else
        echo 'a>b'
    fi
    

    10、逻辑上运算符

    运算符 说明 语法
    非运算,表达式为true则返回false,否则返回true [ ! false ]
    -o(or) 或(或者)运算,有一个表达式为true则返回true [ a -lt 20 -ob -gt 100 ]
    -a(and) 与(并且)运算,两个表达式都为true才返回true [ a -lt 20 -ab -gt 100 ]
    #!/bin/bash
    a=10
    b=20
    
    # 非运算
    if [ ! $a -lt $b ]
    then
        echo 'a > b'
    else
        echo 'a < b'
    fi
    
    # 或运算
    if [ $a -lt 20 -o $b -lt 20 ]
    then
        echo '真'
    fi
    
    # 与运算
    if [ $a -gt 5 -a $b -gt 10 ]
    then
        echo '真'
    fi
    

    11、字符串运算符

    运算符 说明 语法
    = 检测两个字符串是否相等,相等返回true [ a =b ]
    != 检测两个字符串是否相等,不相等返回true [ a !=b ]
    -z (zero) 检测字符串长度是否为0,为0返回true [ -z $a ]
    -n 检测字符串长度是否为0,不为0返回true [ -n $a ]
    str 检测字符串是否为空,不为空返回true [ $a ]
    #!/bin/bash
    a='abc'
    b='def'
    
    if [ $a = $b ]
    then
        echo 'a等于b'
    else
        echo 'a不等于b'
    fi
    
    if [ $a != $b ]
    then
        echo 'a不等于b'
    else
        echo 'a等于b'
    fi
    
    
    if [ -z $a ]
    then
        echo 'a等于0'
    else
        echo 'a不等于0'
    fi
    
    
    if [ -n $a ]
    then
        echo 'a不等于0'
    else
        echo 'a等于0'
    fi
    
    
    if [ $a ]
    then
        echo 'a不为空'
    else
        echo 'a为空'
    fi
    

    12、文件测试运算符(重点)

    运算符 说明 语法
    -d file 检测文档是否是目录,是则返回true [ -d $file ]
    -f file 检测文档是否是文件,是则返回true [ -f $file ]
    -r file 检测文件是否可读,是则返回true [ -r $file ]
    -w file 检测文件是否可写,是则返回true [ -w $file ]
    -x file 检测文件是否可执行,是则返回true [ -x $file ]
    -e file 检测文件(包括目录)是否存在,存在则返回true [ -e $file ]
    #!/bin/bash
    file='/g/StudyDemo/shell_study/testFile.txt'
    dir='/g/StudyDemo/shell_study/testDir'
    
    if [ -d $dir ]
    then
        echo 'dir是目录'
    else
        echo 'dir不是目录'
    fi
    
    if [ -f $file ]
    then
        echo 'file是文件'
    else
        echo 'file不是文件'
    fi
    
    if [ -r $file ]
    then
        echo 'file可读'
    else
        echo 'file不可读'
    fi
    
    if [ -w $file ]
    then
        echo 'file可写'
    else
        echo 'file不可写'
    fi
    
    if [ -x $file ]
    then
        echo 'file可执行'
    else
        echo 'file不可执行'
    fi
    
    if [ -e $dir ]
    then
        echo 'dir存在'
    else
        echo 'dir不存在'
    fi
    

    13、shell脚本附带选项

    # option.sh
    #!/bin/bash
    echo $0 $1 $2 $3
    
    终端输入 #./option.sh a b c
    在脚本中可以用"$1"表示a,"$2"表示b,以此类推。("$0"是执行的脚本文件名)
    

    相关文章

      网友评论

          本文标题:shell入门

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