精华内容
下载资源
问答
  • shell 编程中使用到得if语句内判断参数–b 当file存在并且是块文件时返回真-c 当file存在并且是字符文件时返回真-d 当pathname存在并且是一个目录时返回真-e 当pathname指定的文件或目录存在时返回真-f 当file存在...

    shell 编程中使用到得if语句内判断参数

    –b 当file存在并且是块文件时返回真

    -c 当file存在并且是字符文件时返回真

    -d 当pathname存在并且是一个目录时返回真

    -e 当pathname指定的文件或目录存在时返回真

    -f 当file存在并且是正规文件时返回真

    -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真

    -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效

    -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真

    -p 当file存在并且是命令管道时返回为真

    -r 当由pathname指定的文件或目录存在并且可读时返回为真

    -s 当file存在文件大小大于0时返回真

    -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真

    -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的

    -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真

    UNIX Shell 里面比较字符写法-eq  等于-ne 不等于

    -gt 大于

    -lt 小于

    -le 小于等于

    -ge 大于等于

    -z 空串

    = 两个字符相等

    != 两个字符不等

    -n 非空串更为详细的说明

    -e filename 如果 filename 存在,则为真[ -e /var/log/syslog ]

    -d filename 如果 filename 为目录,则为真[ -d /tmp/mydir ]

    -f filename 如果 filename 为常规文件,则为真 [ -f /usr/bin/grep ]

    -L filename 如果 filename 为符号链接,则为真[ -L /usr/bin/grep ]

    -r filename  如果 filename 可读,则为真 [ -r /var/log/syslog ]

    -w filename 如果 filename 可写,则为真 [ -w /var/mytmp.txt ]

    -x filename 如果 filename 可执行,则为真 [ -L /usr/bin/grep ]

    filename1 -nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services -nt /etc/services ]

    filename1 -ot filename2   如果 filename1 比 filename2 旧,则为真 [ /boot/bzImage -ot arch/i386/boot/bzImage ]

    字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

    -z string 如果 string 长度为零,则为真 [ -z $myvar ]

    -n string 如果 string 长度非零,则为真 [ -n $myvar ]

    string1 = string2 如果 string1 与 string2 相同,则为真[ $myvar = one two three ]

    string1 != string2 如果 string1 与 string2 不同,则为真 [ $myvar != one two three ]

    算术比较运算符

    num1 -eq num2 等于[ 3 -eq $mynum ]

    num1 -ne num2 不等于 [ 3 -ne $mynum ]

    num1 -lt num2 小于 [ 3 -lt $mynum ]

    num1 -le num2小于或等于 [ 3 -le $mynum ]

    num1 -gt num2 大于 [ 3 -gt $mynum ]

    num1 -ge num2大于或等于 [ 3 -ge $mynum ]

    位置参数 $1, $2,..., $N,$#代表了命令行的参数数量, $0代表了脚本的名字,第一个参数代表$1,第二个参数代表$2,以此类推,参数数量的总数存在$#中,

    Linux shell编程——if条件判断

    快捷if

    [ -f "/etc/shadow" ]  echo "uses shadow" 可以理解为如果左边的表达式为真则执行右边的语句

    [ -f /var/run/dhcpd.pid ]  rm /var/run/dhcpd.pid 检查 文件是否存在,如果存在就删掉;如果不是“前面”,则后面检验文件是否存在,如果存在就退出

    [ ] 和  [[ ]] 的区别

    [[ $a == z* ]]        如果$a以z开头,那么匹配成功

    [[ $a == "z*"]]     如果$a等于z*(字符串)

    [ $a == z*]          file globbing 和 world spilitting将会发生

    [ "$a" == "z*"]     如果$a等于“z*”未完待续。。。

    展开全文
  • Background 网上的方法有很多种,眼花缭乱,弱水三千,只取一瓢,这里使用**=~**方法实现。 1、实现效果 2、源码 contains.sh #!/bin/bash ...function toggle_case() { ... # 第一个参数是所要转化的字符串 if [[ -z

    Background

    网上的方法有很多种,眼花缭乱,弱水三千,只取一瓢,这里使用=~方法实现。

    1、实现效果

    在这里插入图片描述

    2、源码 contains.sh

    #!/bin/bash
    
    # 大小写转换
    function toggle_case() {
        str_lower='a-z'
        str_upper='A-Z'
        msg='Please input param 【<str> [lower|upper]】'
        # 第一个参数是所要转化的字符串
        if [[ -z $1 ]]; then
            echo $msg
            exit 1
        # 第二个参数是转换成大、小写,默认转换成小写
        elif [[ -z $2 || $2 = "lower" ]]; then
            echo "$1" | tr $str_upper $str_lower
        # 转换成大写  
        elif [[ $2 = "upper" ]]; then
            echo "$1" | tr $str_lower $str_upper
        else
            echo $msg
            exit 1
        fi
    }
    
    
    # 判断一个字符串是否包含另一个字符串,可以指定是否忽略大小写,默认不忽略大小写
    function is_contains() {
        # 源字符串
        str_src=$1
        # 被包含的字符串
        str_dst=$2
        # 是否忽略大小写
        is_ignore=$3
        # 提示信息
        msg='Please input param 【<str_src> <str_dst> [true|false]】'
        if [[ -z $str_src || -z $str_dst ]]; then
            echo $msg
            exit 1
        fi
        # 忽略大小写
        if [[ $is_ignore = 'true' ]]; then
            str_src=$(toggle_case "$str_src")
            str_dst=$(toggle_case "$str_dst")
        fi
        # 判断
        if [[ "$str_src" =~ "$str_dst" ]]; then
            echo 'true'
        else
            echo 'false'
        fi
    }
    # 输出结果
    echo $(is_contains "$1" "$2" "$3")
    
    展开全文
  • 条件判断字符串判断 $str1 == $str2 #字符串是否相等 $str1 != $str2 #字符串是否不相等 -z "$str" #字符串长度是否为0 zero -n "$str" #字符串长度是否不为0 not zero 条件判断字符串判断测试 [ "jack...

    条件判断语法

    if 条件; then

      #条件成立执行的命令,可以有多个命令

    else

      #条件不成立执行的命令,可以多个命令

    fi

    条件判断之字符串判断

    $str1 == $str2 #字符串是否相等

    $str1 != $str2 #字符串是否不相等

    -z "$str" #字符串长度是否为0 zero

    -n "$str" #字符串长度是否不为0   not zero

    条件判断之字符串判断测试

    [ "jackin" == "jackin" ]

    echo $?

    [ "jackin" == "jackin  " ]

    echo $?

    [ -z "jackin" ]

    echo $?

    字符串判断举例,建议变量要加双引号

    myname="jackin"

    if [ "$myname" == "jackin" ];then

      echo "my name is jackin"

    else

      echo "my name is not jackin"

    fi

    变量不加双引号的话,可能会有语法错

    if [ $myname == "jackin" ];then

      echo "your name is jackin"

    else

      echo "your name is not jackin"

    fi

    判断rpm包是否已安装,升级有可能会导致系统问题

    rpm -qa pcre-devel #返回值都为0,无法根据返回值判断

    result=$(rpm -qa pcre-develaa) #使用$()获取命令的输出

    echo $result

    result=$(rpm -qa pcre-devel)

    echo $result

    softpack="pcre-devel"

    soft_result=$(rpm -qa $softpack)

    if [ -z "$soft_result" ];then

      echo "${softpack} is not find"

      yum install ${softpack} -y

    else

      echo "${softpack} is find"

    fi

    展开全文
  • 涉及到比较和判断的时候,要注意整数比较使用-...(取反)字符串比较实用字符串的比较使用以下三个比较运算符:= 或者(==)、!= 、> 、 -n表示判断后面的值是否为空,不为空则返回true,为空则返回false。下面的一个...

    涉及到比较和判断的时候,要注意

    整数比较使用-lt,-gt,ge等比较运算符,详情参考:整数比较

    文件测试使用 -d, -f, -x等运算发,详情参考:文件测试

    逻辑判断使用    &&(且)、||(或)、!(取反)

    字符串比较实用

    字符串的比较使用以下三个比较运算符:= 或者(==)、!= 、> 、

    -n表示判断后面的值是否为空,不为空则返回true,为空则返回false。

    下面的一个例子:

    #!/bin/bash

    #文件名:test.sh

    read -p 'please input name:' name

    read -p 'please input password:' pwd

    if [ -z $name ] || [ -z $pwd ]

    then

    echo "hacker"

    else

    if [ $name == 'root' ] && [ $pwd == 'admin' ]

    then

    echo "welcome"

    else

    echo "hacker"

    fi

    fi

    运行测试:

    ubuntu@ubuntu:~$ ./test.sh

    please input name:root

    please input password:admin

    welcome

    ubuntu@ubuntu:~$ ./test.sh

    please input name:root

    please input password:

    hacker

    ubuntu@ubuntu:~$ ./test.sh

    please input name:root

    please input password:beyond

    hacker

    ubuntu@ubuntu:~$

    注意:

    比较运算符的两边都有空格分隔,同时要注意比较运算符两边的变量是否可能为空,比如下面这个例子:

    #!/bin/bash

    #文件名:test.sh

    if [ $1 == 'hello' ];then

    echo "yes"

    elif [ $1 == 'no' ];then

    echo "no"

    fi

    运行:

    ubuntu@ubuntu:~$ ./test.sh

    ./test.sh: line 4: [: ==: unary operator expected

    ./test.sh: line 7: [: ==: unary operator expected

    ubuntu@ubuntu:~$ ./test.sh hello

    yes

    ubuntu@ubuntu:~$ ./test.sh no

    no

    ubuntu@ubuntu:~$ ./test.sh test

    ubuntu@ubuntu:~$

    可以看到,在代码中想要判断shell命令的第二个参数是否为hello或者no,但是在测试的时候,如果没有第二个参数,那么就变成了 if [ == 'hello' ],这个命令肯定是错误的了,所以会报错,比较好的做法是在判断之前加一个判断变量是否为空  或者使用双引号将其括起来,注意,必须使用双引号,因为变量在双引号中才会被解析。

    #!/bin/bash

    #文件名:test.sh

    if [ "$1" == 'yes' ]; then

    echo "yes"

    elif [ "$1" == 'no' ]; then

    echo "no"

    else

    echo "nothing"

    fi

    运行:

    ubuntu@ubuntu:~$ ./test.sh

    nothing

    ubuntu@ubuntu:~$ ./test.sh yes

    yes

    ubuntu@ubuntu:~$ ./test.sh no

    no

    ubuntu@ubuntu:~$ ./test.sh demo

    nothing

    这样的话,就不会报错了。

    展开全文
  • 判断一个字符串是否为空的方法: 方法一: if [ "$str" = "" ] #如果str是空字符串则返回真 方法二: if [ x"$str" = x ] #如果...还可以使用 if 与 test 命令的 z 参数,可以判断字符串是否为空 if test -z $str
  • 2、利用shell 中 变量 的字符串替换成空格分割 3、设置分隔符,通过 IFS 变量 4、利用tr 指令实现字符替换 二、文件分割 附录 【转】linux下awk内置函数的使用(split/substr/length) 四、gsub函数 五、正则...
  • help命令可以查看帮助help testLinux 下判断字符串是否为空,有一个大坑!首先想到的两个参数:-z :判断 string 是否是空串-n :判断 string 是否是非空串正确做法:#!/bin/shSTRING=if [ -z "$STRING" ]; thenecho...
  • shell脚本中字符串的不区分大小写比较==运算符用于比较shell脚本中的两个字符串。 但是,我想比较两个忽略大小写的字符串,怎么做呢? 这有什么标准命令吗?11个解决方案126 votes在Bash中,您可以使用参数扩展将...
  • cut命令主要是接受三个定位方法:第一,字节(bytes),用选项-b第二,字符(characters),用选项-c第三,域(fields),用选项-f3 以“字节”定位,给个最简单的例子?举个例子吧,当你执行ps命令时,...
  • 经常碰到的场景,需要去除字符串中的前后的空格。在Shell中不像其他语言有strip()来处理,不过也是可以使用诸如awk等命令来处理。下面是一个简单示例:[root@localhost ~]# echo ' A B C ' | awk '{gsub(/^\s+|\s+$/,...
  • Shell判断字符串是否以某些字符开头 ==比较 # 可以使用通配符 [[ $str == h*]] # 错误示例,通配符会变成字符串 [[ $str == 'h*']] [[ $str == "h*"]] 等号前后要用空格 通配符不能使用引号括起来 比较语句...
  • shell脚本变量字符串拼接的一个坑

    千次阅读 2020-12-29 09:07:55
    背景 问题发生在jenkins持续集成的打包脚本上,我们需要将数据库脚本按照不同条件抽取出来,放到不同的文件夹下。...是的,它的字符串拼接的方式错了,就是这句$VERSION_$vstandard。 我们通过Linux黑窗
  • Shell中获取字符串长度的常用方法: aa='abc' # 1.利用wc的-L参数来获取字符串的长度 echo ${aa} | wc -L # 2. 利用awk的length方法 echo ${aa} | awk '{print length($0)}' # 3.利用awk的NF项来获取字符串长度 ...
  • 变量子串[root@mycentos shell_dir]# old="hello,world"[root@mycentos shell_dir]# echo $oldhello,world[root@mycentos shell_dir]# echo ${old}hello,world[root@mycentos shell_dir]# echo ${#old}11[root@...
  • 先写一些基本语法:1、字符串判断str1 = str2 当两个串有相同内容、长度时为真str1 != str2 当串str1和str2不等时为真-n str1 当串的长度大于0时为真(串非空)-z str1 当串的长度为0时为真(空串)str1 当串str1为...
  • 先我们来看看在shell中如何判断字符串为null#!/bin/basha="a = b"if [ $a ]thenecho trueelseecho falsefiif [ "$a" ]thenecho trueelseecho falsefiif [ -z $b ]thenecho trueelseecho falsefiif [ -z "$b" ]...
  • Shell提供了多种字符串操作的参数扩展。除了算术扩展(在第7章讲到),还有一个常见的名为bc的命令行程序,它能执行更高层次的数学运算。 34.1 参数扩展(Parameter Expansion) 虽然参数扩展在第7章就已出现,...
  • then echo YES else echo NO fi exit 0 else echo "$0: $2 is not a readable entry" exit 2 fi 如果我运行./lab4文件filename1,它将检查第一个参数字符串“file”还是“dir”,如果第一个参数是“file”,...
  • shell中对变量的值添加单引号,爽引号和不添加的区别:对类型来说是无关的,即不是添加了引号就变成了字符串类型,单引号不对相关量进行替换,如不对$符号解释成变量引用,从而用对应变量的值替代,双引号则会进行...
  • 前言我们在日常工作中,对于求字符串操作在shell脚本中很常用,实现的方法有很多种,下面就来给大家归纳、汇总了求字符串的几种可能方法,话不多说了,来一起看看详细的介绍吧。方法如下:【方法一】:利用${#str}来...
  • shell反转字符串

    2021-05-12 15:21:09
    反转字符串#!/bin/sh#test.shSTR=$1LEN=${#STR}for((i=LEN;i>=0;i--))dotrap 'echo "第$LINENO行操作之前i=$i"' DEBUGtrap '错误 $LINENO:' ERRtrap 'echo "结尾:"' EXITecho -n ${STR:i:1}doneecho -e "\n"运行....
  • 快速定位某个字符串在某文件中出现的行数,可以使用 linux中grep命令默认情况,grep命令只会输出匹配的字符串所在的行,如下:要想同时输出行号,可以指定参数-n,关于-n参数描述如下:-n, --line-number print li.....
  • Shell字符串排序的几种方法【方法一】按ASCII正向排序备注:1) tr将子字符串中的空白转换为换行符,再用sort排序2) sort无参的话,默认按ASCII正向排序【方法二】按ASCII正向排序备注:1) -r参数: 按ASCII码反向排序...
  • shell字符串截取总结

    2021-05-10 05:03:35
    shell中截取字符串的方法有很多中,本人对其中几种常用的进行整理总结。0x01、grep在文件中搜寻字符串匹配的行并输出Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印...
  • 目录判断文件中是否存在某个字符串判断目录不存在并创建判断目录常用参数 判断文件中是否存在某个字符串 if [ `grep -c "aaa" "./text.txt" -ne '0'];then echo "hello word" fi 判断目录是否存在 判断目录不...
  • 原文https://blog.csdn.net/wuyinggui10000/article/details/52779364脚本开发中遇到的问题是:原java中的字符串分割操作(substring ...shell中可以采用标识符来做分割字符串,包括substring(0,index)和substrin...
  • 语法格式: [[ "${array[@]}" =~ "字符串" ]]示例:#!/bin/sh##数组array=(addressbasecartcompanystore)# $1 如果存在,输出 $1 exists,$1 如果不存在,输出 $1 not existsif [ "$1" != null ];thenif [[ "${array...
  • shell切割字符串 切割字符串 filepath="/realtime/temp/lxg/params.txt" while read line do array=(${line//,/ }) for var in ${array[@]} do echo $var done done < $filepath array=(${line//,/})这里是...
  • Linux Shell之统计某个字符串在文件中的出现次数

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 80,821
精华内容 32,328
关键字:

shell判断参数字符串