expr
是一个用于执行基本算术运算和字符串比较的命令行工具,在 shell 脚本中有着广泛的应用。通过 expr
命令,你可以轻松地进行整数计算、字符串长度判断以及模式匹配等操作。本文将介绍 expr
在脚本中的应用实例,并提供一些实用示例。
expr
最基本的功能之一就是执行简单的算术运算。例如:
# 计算两个整数的和
result=$(expr 5 + 3)
echo $result # 输出: 8
# 计算一个整数与另一个整数的差
diff=$(expr 10 - 4)
echo $diff # 输出: 6
# 计算一个整数除以另一个整数的结果(取整)
quotient=$(expr 25 / 5)
echo $quotient # 输出: 5
# 计算一个整数除以另一个整数的余数
remainder=$(expr 10 % 3)
echo $remainder # 输出: 1
除了算术运算外,expr
还支持字符串相关的操作。例如:
# 获取字符串长度
string="Hello, World!"
length=$(expr length "$string")
echo "Length of the string is $length" # 输出: Length of the string is 13
# 比较两个字符串是否相等
str1="apple"
str2="banana"
if expr "$str1" = "$str2"; then
echo "Strings are equal"
else
echo "Strings are not equal"
fi # 输出: Strings are not equal
# 使用通配符进行模式匹配
pattern="*.txt"
if expr "$filename" : $pattern >/dev/null; then
echo "Filename matches the pattern"
else
echo "Filename does not match the pattern"
fi # 更多示例可以替换 filename 变量测试
下面是一个综合运用 expr
的 shell 脚本实例,该脚本用于统计文件中特定单词的出现次数:
#!/bin/bash
# 检查参数数量是否正确
if [ "$#" -ne 2 ]; then
echo "Usage: $0 <word> <filename>"
exit 1
fi
word="$1"
filename="$2"
# 初始化计数器
count=0
while read line; do
# 使用 expr 进行字符串匹配并计算出现次数
words=$(echo "$line" | tr ' ' '\n')
for w in $words; do
if [ "$(expr match "$w" "$word")" -gt 0 ]; then
count=$((count + 1))
fi
done
done < "$filename"
echo "The word '$word' appears $count times in the file."
上述脚本接受两个参数:要查找的单词和文件名,然后计算并输出该单词在文件中出现的次数。这里使用了 expr match
来检查每个单词是否与目标单词匹配。
通过以上示例可以看到,expr
命令及其提供的功能对于编写高效、简洁的 shell 脚本非常有用。不论是简单的算术运算还是复杂的字符串操作,expr
都能提供强大的支持。在实际开发过程中合理使用 expr
可以使脚本更加灵活且易于维护。
利用这些技巧和方法,你可以更好地掌握并应用 expr
命令,进而写出功能更强大、更专业的 shell 脚本来满足不同的需求。