使用 expr 命令的不同方法

使用 expr 命令的不同方法

我正在尝试从里到外学习 bash expr 命令。使用 expr 命令的最基本到最有创意/棘手/意想不到的方法是什么?小的、易于管理的例子很棒。

答案1

我主要用于expr其正则表达式匹配。有时它比sedor更具描述性grep

if expr "$value" : '.*bar$' >/dev/null; then ...

相比:

if echo "$value" | grep '.*bar$' >/dev/null; then ...

或者:

name=`expr "$filename" : '.*/\(.*\)\.[^.]*$'`

相比:

name=`echo "$filename" | sed 's!.*/\(.*\)\.[^.]*$/\1/'`

它们在功能上是等效的,但 expr 稍快一些。特别是在过去,一些 shell 将 expr 作为内置函数(例如 DEC Ultrix)。

另外,我使用严格的 Bourne shell 语法进行编程,因此我仍然使用expr基本算术,例如:

count=0
while [ $count -lt 10 ]; do
    # something
    count=`expr $count + 1`
done

相关内容