Shell

推荐列表 站点导航

当前位置:首页 > 脚本编程 > Shell >

Bash Shell字符串比较入门

来源:网络整理  作者:fen  发布时间:2020-12-25 15:22
在编写Bash脚本时,您通常需要比较两个字符串以检查它们是否相等。 当两个字符串具有相同的长度并且包含相同的字...

在编写Bash脚本时,您通常需要比较两个字符串以检查它们是否相等。 当两个字符串具有相同的长度并且包含相同的字符序列时,它们是相等的。

本教程描述了如何比较Bash中的字符串。

比较运算符

比较运算符是比较值并返回true或false的运算符。 在比较Bash中的字符串时,您可以使用以下运算符:

string1 = string2 和 string1 == string2 - 相等运算符,如果字符串相等,则返回true。

将=运算符与test [命令一起使用。

将==运算符与[[模式匹配命令]一起使用。

string1 != string2 - 不等式运算符,如果字符串不相等,则返回true。

string1 =~ regex - 正则表达式运算符,如果左边字符串数与右侧的扩展正则表达式匹配,则返回true。

string1 > string2 - 大于运算符,按字典顺序(字母顺序)排序,如果左边字符串大于右边字符串,则返回true。

string1 < string2 - 小于运算符,按字典顺序(字母顺序)排序,如果右边边字符串大于左边字符串,则返回true。

-z string - 如果字符串长度为零,则为True。

-n string - 如果字符串长度不为零,则为True。

以下是比较字符串时需要注意的几点:

必须在二元运算符和操作数之间使用空格。

始终在变量名称周围使用双引号以避免任何单词拆分或通配问题。

Bash不按“类型”隔离变量,变量根据上下文被视为整数或字符串。

检查两个字符串是否相等

在大多数情况下,在比较字符串时,您需要检查字符串是否相等。

以下脚本使用test [命令检查字符串是否与=运算符相等:

#!/bin/bash

VAR1="Linuxidc.com"
VAR2="Linuxidc.com"

if [ "$VAR1" = "$VAR2" ]; then
    echo "字符串是相等的。"
else
    echo "字符串是不相等的。"
fi

执行脚本时,它将打印以下输出。

linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com.sh
字符串是相等的。

这是另一个脚本,它接受用户的输入并比较给定的字符串。 在这个例子中,我们将使用[[command and == operator]。

再输入字符串

请输入第一二个字符串

#!/bin/bash

read -p "请输入第一个字符串: " VAR1
read -p "请输入第二个字符串: " VAR2

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "字符串是相等的。"
else
    echo "字符串是不相等的。"
fi

运行脚本并在提示时输入字符串:

linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com.sh
请输入第一个字符串:
请输入第二个字符串: linuxidc.com
字符串是不相等的。

您还可以使用逻辑和&&和或|| 比较字符串:

[[ "string1" == "string2" ]] && echo "linuxidc.com" || echo "linuxidc"

linuxidc

检查String是否包含子字符串

有多种方法可以检查字符串是否包含子字符串。

一种方法是使用星号符号*来环绕子串,这意味着匹配所有字符。

#!/bin/bash

VAR='GNU/Linux 是一个操作系统'
if [[ $VAR == *"Linux"* ]]; then
  echo "它在那里。"
fi

该脚本将回显以下内容:

它在那里。

另一种选择是使用正则表达式运算符=?,如下所示:

#!/bin/bash

VAR='GNU/Linux 是一个操作系统'
if [[ $VAR =~ .*Linux.* ]]; then
  echo "它在那里。"
fi

后跟星号.*的句点匹配除了换行符之外的任何字符零次或多次出现。

检查String是否为空

通常,您还需要检查变量是否为空字符串。 您可以使用-n和-z运算符来完成此操作

#!/bin/bash

VAR=''
if [[ -z $VAR ]]; then
  echo "字符串为空。"
fi

输出:

字符串为空。

#!/bin/bash

VAR=='linuxidc.com'
if [[ -n $VAR ]]; then
  echo "字符串不为空。"
fi

输出:

字符串不为空。

使用ase操作符比较字符串

您也可以使用case语句来比较字符串,而不是使用测试运算符:

#!/bin/bash

VAR="Arch Linux"

case $VAR in

"Arch Linux")
    echo -n -e "Linuxidc 匹配\n"
    ;;
  Fedora | CentOS)
    echo -n "Red Hat"
    ;;
esac

输出:

Linuxidc 匹配

字典比较

词法比较是通过从左到右顺序比较字符串中的字符,按字母顺序比较两个字符串的操作。这种比较很少使用。

下面的脚本从词汇上比较了两个字符串:

#! /bin/bash value1=linuxidc value2=linuxidc.com if [ $value1 \> $value2 ] then echo "$value1 大于 $value2" elif [ $value1 \< $value2 ] then echo "$value1 小于 $value2" else echo "$value1 等于 $value2" fi

该脚本将输出以下内容:

linuxidc 小于 linuxidc.com

相关热词: shell

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/jiaob/shell/8958.shtml

最新文章
PHP生成奖状 PHP生成奖状

时间:2021-01-06

python实现输入五个数并求 python实现输入五个数并求

时间:2021-01-06

php检测网站是否正常打开 php检测网站是否正常打开

时间:2021-01-05

python怎么右对齐 python怎么右对齐

时间:2021-01-05

Python3爬虫入门之Python3的安 Python3爬虫入门之Python3的安

时间:2021-01-05

如何用PHP接收http请求头信 如何用PHP接收http请求头信

时间:2021-01-05

数据库怎么连接用php写的 数据库怎么连接用php写的

时间:2021-01-05

php后缀怎么打开 php后缀怎么打开

时间:2021-01-05

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

Bash Shell字符串比较入门

2020-12-25 编辑:fen

在编写Bash脚本时,您通常需要比较两个字符串以检查它们是否相等。 当两个字符串具有相同的长度并且包含相同的字符序列时,它们是相等的。

本教程描述了如何比较Bash中的字符串。

比较运算符

比较运算符是比较值并返回true或false的运算符。 在比较Bash中的字符串时,您可以使用以下运算符:

string1 = string2 和 string1 == string2 - 相等运算符,如果字符串相等,则返回true。

将=运算符与test [命令一起使用。

将==运算符与[[模式匹配命令]一起使用。

string1 != string2 - 不等式运算符,如果字符串不相等,则返回true。

string1 =~ regex - 正则表达式运算符,如果左边字符串数与右侧的扩展正则表达式匹配,则返回true。

string1 > string2 - 大于运算符,按字典顺序(字母顺序)排序,如果左边字符串大于右边字符串,则返回true。

string1 < string2 - 小于运算符,按字典顺序(字母顺序)排序,如果右边边字符串大于左边字符串,则返回true。

-z string - 如果字符串长度为零,则为True。

-n string - 如果字符串长度不为零,则为True。

以下是比较字符串时需要注意的几点:

必须在二元运算符和操作数之间使用空格。

始终在变量名称周围使用双引号以避免任何单词拆分或通配问题。

Bash不按“类型”隔离变量,变量根据上下文被视为整数或字符串。

检查两个字符串是否相等

在大多数情况下,在比较字符串时,您需要检查字符串是否相等。

以下脚本使用test [命令检查字符串是否与=运算符相等:

#!/bin/bash

VAR1="Linuxidc.com"
VAR2="Linuxidc.com"

if [ "$VAR1" = "$VAR2" ]; then
    echo "字符串是相等的。"
else
    echo "字符串是不相等的。"
fi

执行脚本时,它将打印以下输出。

linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com.sh
字符串是相等的。

这是另一个脚本,它接受用户的输入并比较给定的字符串。 在这个例子中,我们将使用[[command and == operator]。

再输入字符串

请输入第一二个字符串

#!/bin/bash

read -p "请输入第一个字符串: " VAR1
read -p "请输入第二个字符串: " VAR2

if [[ "$VAR1" == "$VAR2" ]]; then
    echo "字符串是相等的。"
else
    echo "字符串是不相等的。"
fi

运行脚本并在提示时输入字符串:

linuxidc@linuxidc:~/linuxidc.com$ ./linuxidc.com.sh
请输入第一个字符串:
请输入第二个字符串: linuxidc.com
字符串是不相等的。

您还可以使用逻辑和&&和或|| 比较字符串:

[[ "string1" == "string2" ]] && echo "linuxidc.com" || echo "linuxidc"

linuxidc

检查String是否包含子字符串

有多种方法可以检查字符串是否包含子字符串。

一种方法是使用星号符号*来环绕子串,这意味着匹配所有字符。

#!/bin/bash

VAR='GNU/Linux 是一个操作系统'
if [[ $VAR == *"Linux"* ]]; then
  echo "它在那里。"
fi

该脚本将回显以下内容:

它在那里。

另一种选择是使用正则表达式运算符=?,如下所示:

#!/bin/bash

VAR='GNU/Linux 是一个操作系统'
if [[ $VAR =~ .*Linux.* ]]; then
  echo "它在那里。"
fi

后跟星号.*的句点匹配除了换行符之外的任何字符零次或多次出现。

检查String是否为空

通常,您还需要检查变量是否为空字符串。 您可以使用-n和-z运算符来完成此操作

#!/bin/bash

VAR=''
if [[ -z $VAR ]]; then
  echo "字符串为空。"
fi

输出:

字符串为空。

#!/bin/bash

VAR=='linuxidc.com'
if [[ -n $VAR ]]; then
  echo "字符串不为空。"
fi

输出:

字符串不为空。

使用ase操作符比较字符串

您也可以使用case语句来比较字符串,而不是使用测试运算符:

#!/bin/bash

VAR="Arch Linux"

case $VAR in

"Arch Linux")
    echo -n -e "Linuxidc 匹配\n"
    ;;
  Fedora | CentOS)
    echo -n "Red Hat"
    ;;
esac

输出:

Linuxidc 匹配

字典比较

词法比较是通过从左到右顺序比较字符串中的字符,按字母顺序比较两个字符串的操作。这种比较很少使用。

下面的脚本从词汇上比较了两个字符串:

#! /bin/bash value1=linuxidc value2=linuxidc.com if [ $value1 \> $value2 ] then echo "$value1 大于 $value2" elif [ $value1 \< $value2 ] then echo "$value1 小于 $value2" else echo "$value1 等于 $value2" fi

该脚本将输出以下内容:

linuxidc 小于 linuxidc.com

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://www.juheyunku.com/jiaob/shell/8958.shtml

相关文章

风云图片

推荐阅读

返回Shell频道首页