欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

macOS Shell 字符串比较示例 deepseek chatgpt 有大用 有 大大用

macOS Shell 字符串比较示例

在macOS的Shell环境中,有多种方法可以比较字符串。下面我将展示几种常见的字符串比较方法及其示例。

字符串比较操作符

1. 相等比较  一个中括号的情况下单等于和双等于(两个等于)都可以

                   两个中括号的情况下单等于和双等于(两个等于)也都可以


bash
string1="Hello"
string2="World"

if [ "$string1" = "$string2" ]; then
    echo "字符串相等"
else
    echo "字符串不相等"
fi

if [ "$string1" == "$string2" ]; then    echo "字符串相等" else    echo "字符串不相等" fi


if [[ "$string1" = "$string2" ]]; then
    echo "字符串相等"
else
    echo "字符串不相等"
fi

if [[ "$string1" == "$string2" ]]; then    echo "字符串相等" else    echo "字符串不相等" fi

2. 不相等比较

bash
if [ "$string1" != "$string2" ]; then
    echo "字符串不相等"
fi

3. 检查空字符串

bash
if [ -z "$string1" ]; then
    echo "字符串为空"
fi

if [ -n "$string1" ]; then
    echo "字符串不为空"
fi

4. 模式匹配比较

bash
filename="document.txt"

if [[ "$filename" == *.txt ]]; then
    echo "这是一个文本文件"
fi

5. 正则表达式匹配

bash
email="user@example.com"

if [[ "$email" =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ ]]; then
    echo "有效的电子邮件地址"
else
    echo "无效的电子邮件地址"
fi

完整示例脚本

bash
#!/bin/bash

# 定义要比较的字符串
str1="Apple"
str2="Orange"
str3="Apple"
empty_str=""

# 1. 相等比较
echo "1. 相等比较:"
if [ "$str1" = "$str2" ]; then
    echo "   $str1$str2 相等"
else
    echo "   $str1$str2 不相等"
fi

if [ "$str1" = "$str3" ]; then
    echo "   $str1$str3 相等"
else
    echo "   $str1$str3 不相等"
fi

# 2. 不相等比较
echo -e "\n2. 不相等比较:"
if [ "$str1" != "$str2" ]; then
    echo "   $str1$str2 不相等"
fi

# 3. 检查空字符串
echo -e "\n3. 空字符串检查:"
if [ -z "$empty_str" ]; then
    echo "   empty_str 是空字符串"
fi

if [ -n "$str1" ]; then
    echo "   str1 不是空字符串"
fi

# 4. 模式匹配
echo -e "\n4. 模式匹配:"
file="image.jpg"
if [[ "$file" == *.jpg ]] || [[ "$file" == *.png ]]; then
    echo "   $file 是图像文件"
else
    echo "   $file 不是图像文件"
fi

# 5. 正则表达式匹配
echo -e "\n5. 正则表达式匹配:"
phone="123-456-7890"
if [[ "$phone" =~ ^[0-9]{3}-[0-9]{3}-[0-9]{4}$ ]]; then
    echo "   $phone 是有效的电话号码格式"
else
    echo "   $phone 不是有效的电话号码格式"
fi

# 6. 字符串长度比较
echo -e "\n6. 字符串长度比较:"
if [ ${#str1} -gt ${#str2} ]; then
    echo "   $str1$str2 长"
elif [ ${#str1} -lt ${#str2} ]; then
    echo "   $str1$str2 短"
else
    echo "   $str1$str2 长度相同"
fi

运行脚本

将上述代码保存为string_comparison.sh,然后执行以下命令:

bash
chmod +x string_comparison.sh
./string_comparison.sh

注意事项

  1. 在比较字符串时,建议将变量用双引号括起来,以防止含有空格的字符串被拆分

  2. 使用===进行字符串比较(在[ ]===是等价的)

  3. 使用[[ ]]而不是[ ]可以进行模式匹配和正则表达式匹配

  4. 使用-z检查空字符串,-n检查非空字符串

这些示例涵盖了macOS Shell中字符串比较的常见用法,可以根据实际需求选择合适的方法。

普通分类: