Eu usei principalmente expr
para sua correspondência de expressão regular. Às vezes, é mais descritivo do que sed
ou grep
:
if expr "$value" : '.*bar$' >/dev/null; then ...
Em comparação com:
if echo "$value" | grep '.*bar$' >/dev/null; then ...
Ou:
name='expr "$filename" : '.*/\(.*\)\.[^.]*$''
Em comparação com:
name='echo "$filename" | sed 's!.*/\(.*\)\.[^.]*$//''
Eles são funcionalmente equivalentes, mas a expr foi ligeiramente mais rápida. Especialmente nos dias mais antigos, quando algumas conchas tinham como um builtin (DEC Ultrix, por exemplo).
Além disso, eu programo na sintaxe estrita do shell Bourne, então eu ainda uso expr
para aritmática básica, por exemplo:
count=0
while [ $count -lt 10 ]; do
# something
count='expr $count + 1'
done