我正在尝试从里到外学习 bash expr 命令。使用 expr 命令的最基本到最有创意/棘手/意想不到的方法是什么?小的、易于管理的例子很棒。
答案1
我主要用于expr
其正则表达式匹配。有时它比sed
or更具描述性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