나는 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이 약간 더 빠릅니다. 특히 과거에는 일부 쉘에 내장 함수로 expr이 있었습니다(예: DEC Ultrix).
또한 저는 엄격한 Bourne 쉘 구문을 사용하여 프로그래밍하므로 다음 expr
과 같은 기본 산술을 계속 사용합니다.
count=0
while [ $count -lt 10 ]; do
# something
count=`expr $count + 1`
done