shell用法总结2

111 阅读1分钟

引言

  • 该系列为个人经常需要将项目代码工程化,所以需要用到shell脚本,前段时间的每日一题非典活动虽然写了不少,但是因为要满足活动要求,所以很多函数等语法无法介绍完全,该文将介绍一个函数具体详细一些的用法

正文:关于[]和[[]]在shell编程中的一些场景用法介绍(概括-上篇)

  • 比如算数大小的比较(注意中括号前后都要有空格,不然报错)
    • 如判断一个变量是否为0: [ $var -eq 0 ]
    • 如判断一个变量是否不为0: [ $var -ne 0 ]
    • 如判断一个变量是否大于/小于0: [ $var -gt/lt 0 ]
    • 如判断一个变量是否大于等于/小于等于0: [ $var -ge/le 0 ]
    • 比如判断是否可读/可执行/可写:[ -r/-x/-w $var ]
  • 文件属性测试(满足条件该[]返回结果为真Ture,反之为假False)
    • 比如判断一个文件是否存在: [ -e $file ]
    • 比如判断是否为目录:[ -d $floder ]
    • 比如判断是否为一个正常的文件目录或者文件:[ -f $file ]
    • !表示一般取反
    • 比如我用到的一行代码实现条件判断[ ! -d ${folder} ] && mkdir -p ${folder},如果目录不存在就创建,存在就不创建
  • 字符串比较:(一般来说进行字符串比较的时候最好使用双中括号防止遇到单中括号的一些容易出错的场景)
    • 比如两个字符串是否相同[[ $str1 = $str2 ]]
    • 判断某字符串是否是空字符串[[ -z $str1 ]]
    • 判断某字符串是否是非空字符串[[ -n $str1 ]]

补充test函数

  • 当使用单中括号的场景比较多时,可以使用test函数替换(想想写c或者java的大括号,那一层套一层的场景,不写好格式绝对让你绝望,找错找到无法呼吸)
  • 如上面的[ $var -gt/lt 0 ] 就可以替换成test $var -gt/lt 0

结尾

  • 关于这俩中括号更详细的一些用法下篇文章继续