最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • shell脚本

    正文概述 掘金(_0__0_)   2021-02-19   536

    示例

    test.sh 文件

    #!/bin/bash  表示是哪一种脚本
    echo "Hello World !"
    

    运行

    /bin/sh test.sh
    ./test.sh
    

    变量

    命名

    yourName="aaa" 
    echo $yourName
    echo ${yourName}
    
    • 变量名和等号之间不能有空格
    • 命名只能使用英文数字下划线
    • 不能以数字打头
    • 不能使用bash里关键字

    只读变量 readonly

    yourName="aaa" 
    readonly yourName
    

    删除变量(不能删除只读变量)

    unset yourName
    

    字符串

    单引号

    • 单引号中的变量无效
    • 单引号可以用于拼接
    yourName='aaa'
    echo 'bb${yourName}cc'
    bb${yourName}cc
    echo 'bb'$yourName'cc'
    bbaaacc
    echo 'bb'${yourName}'cc'
    bbaaacc
    

    双引号

    • 双引号里可以有变量
    • 双引号里可以出现转义字符
    yourName="aaa"
    echo "bb${yourName}cc"
    bbaaacc
    echo "bb"$yourName"cc"
    bbaaacc
    echo "bb\"${yourName}\"cc"
    bb"aaa"cc
    

    获取字符串长度

    yourName="aaa"
    echo ${#yourName}
    

    提取子字符串

    ${string:index:leng}

    aa="abcd"
    echo ${aa:1:2} bc
    

    查找子字符串

    aa="abcdef"
    echo `expr index "$aa" f`
    6 查找f在字符串中位置(index+1)
    

    数组

    定义数组

    arr=(1 2 3 4)
    arr[6]=6
    echo ${arr[6]}
    6
    echo ${arr[@]} 所有元素
    1 2 3 4
    

    数组长度

    arr=(1 2 3 4)
    echo ${#arr[@]}
    4
    echo ${#arr[*]}
    4
    

    注释

    单行注释

    # 单行注释
    

    多行注释

    :<<EOF
    多行注释
    EOF
    
    :<<'
    多行注释
    '
    
    :<<!
    注释内容...
    !
    

    参数传递

    /bin/sh test.sh 1 2 3
    $0 test.sh 文件名
    $1 1 第一个参数
    $2 2 第二个参数
    $3 3 第三个参数
    $# 3 参数个数
    $* 1 2 3 所有参数
    $@ 1 2 3 所有参数
    $$ 单前脚本进程号
    $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
    

    运算符

    算术运算

    # 表达式与运算符之间要有空格
    a=10
    b=20
    +  echo `expr $a + $b`  //30
    -  echo `expr $b - $a`  //10
    *  echo `expr $b \* $a` //300
    /  echo `expr $b / $a`  //2
    %  echo `expr $b % $a`  //0
    == echo `expr $b == $a` //0
    != echo `expr $b != $a` //1
    =  赋值 a=$b
    

    关系运算

    # 只支持数字,或全数字的字符串
    a=10
    b=20
    -eq	[ $a -eq $b ] 两个数是否相等 false
    -ne	[ $a -ne $b ] 两个数是否不相等 true
    -gt	[ $a -gt $b ] 左边 > 右边 false
    -lt	[ $a -lt $b ] 左边 < 右边 true
    -ge	[ $a -ge $b ] 左边 >= 右边 false
    -le	[ $a -le $b ] 左边 <= 右边 true
    

    布尔运算

    a=10
    b=20
    !   非运算 [ ! false ] true。
    -o	或运算 [ $a -lt 20 -o $b -gt 100 ] true
    -a	与运算	[ $a -lt 20 -a $b -gt 100 ] false
    

    逻辑运算

    &&	逻辑的 AND	[[ $a -lt 100 && $b -gt 100 ]] 返回 false
    ||	逻辑的 OR	[[ $a -lt 100 || $b -gt 100 ]] 返回 true
    

    字符串运算

    a="aa" b="bb"
    =	字符串是否相等	   [ $a = $b ] false
    !=	字符串是否不相等  [ $a != $b ] true
    -z	字符串长度是否为0 [ -z $a ] false
    -n	字符串长度是否不为 0 [ -n "$a" ] true
    $	字符串是否为空	[ $a ] 不为空true
    

    文件检测运算

    -f file 检测文件是否是普通文件
    -r file 检测文件是否可读
    -w file 检测文件是否可写
    -s file 检测文件是否为空
    -x file 检测文件是否可执行
    

    echo

    • 输出到文件
    echo "It is a test" > myfile 
    
    • 显示执行结果
    echo `date`
    

    流程控制

    if

    if [ 10 == 20 ]
    then 
      echo 1
    elif [ 20 == 20 ]
    then
      echo 2
    else 
      echo 3
    fi
    

    for

    for a in a b c
    do 
      echo $a
    done
    

    while

    i=3
    while (($i<=5))
    do
      echo $i
      let i++
    done
    

    until (true停止)

    i=8
    until  (($i<=5))
    do
      echo $i
      let i--
    done
    

    case...esac

    i=2
    case $i in
      1) echo 1
      ;; #表示 break,即执行结束,跳出整个 case ... esac 语句
      2) echo 2
      ;;
      3) echo 3
    esac #结束标记
    

    函数

    function fun(){ # 定义函数
      echo "函数1"
      echo $1 #1 参数1
      return 1 #返回值只能是0-255
    }
    
    fun1 (){ # 定义函数
    # 无return 返回最后一条语句的执行结果
    }
    fun 1
    echo $? #1 函数的返回值
    

    引入其他文件

    # test1.sh
    echo "test1"
    
    # test.sh
    ./test1.sh
    echo "test"
    # test1 test
    

    起源地下载网 » shell脚本

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元