欢迎各位兄弟 发布技术文章
这里的技术是共享的
在macOS的Shell环境中,有多种方法可以比较字符串。下面我将展示几种常见的字符串比较方法及其示例。
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
if [ "$string1" != "$string2" ]; then echo "字符串不相等" fi
if [ -z "$string1" ]; then echo "字符串为空" fi if [ -n "$string1" ]; then echo "字符串不为空" fi
filename="document.txt" if [[ "$filename" == *.txt ]]; then echo "这是一个文本文件" fi
email="user@example.com" if [[ "$email" =~ ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$ ]]; then echo "有效的电子邮件地址" else echo "无效的电子邮件地址" fi
#!/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
,然后执行以下命令:
chmod +x string_comparison.sh
./string_comparison.sh
在比较字符串时,建议将变量用双引号括起来,以防止含有空格的字符串被拆分
使用=
或==
进行字符串比较(在[ ]
中=
和==
是等价的)
使用[[ ]]
而不是[ ]
可以进行模式匹配和正则表达式匹配
使用-z
检查空字符串,-n
检查非空字符串
这些示例涵盖了macOS Shell中字符串比较的常见用法,可以根据实际需求选择合适的方法。