
재작성/재구성의 일부로 bash 스크립트를 더 잘 구성하려고 노력 중이며 다음 상황에서 "모범 사례"가 무엇인지 궁금합니다.
ymd=`echo "${NOEXT}" | egrep -o -m 1 "\-20[0-9]{2}\-[0-9]{2}\-[0-9]{2}\-"`
또는
ymd=`egrep -o -m 1 "\-20[0-9]{2}\-[0-9]{2}\-[0-9]{2}\-" <<< ${NOEXT}`
나는 파이프로 인해 첫 번째 버전이 하위 쉘을 생성한다고 믿습니다. 두 번째 버전에는 here 문자열이 포함되어 있습니까? 나는 그렇지 않다고 생각하지만 내 가정을 검증하고 싶습니다.
답변1
후자는 PID의 증가를 (유휴 시스템에서) 확인하여 (대략) 확인할 수 없습니다. 전자를 실행하면 2씩 증가하고 후자를 실행하면 1만 증가합니다.
하지만, 그것은바시즘, 어쩌면 여기 문서로 대체되어야 할 수도 있습니다:
ymd=`egrep -o -m 1 "\-20[0-9]{2}\-[0-9]{2}\-[0-9]{2}\-" <<EOF
${NOEXT}
EOF`
답변2
POSIX 호환성을 사용할 수 있지만 bash
필요하지 않은 경우 에 대한 외부 호출을 사용하지 않고도 정규식 일치를 수행할 수 있습니다 egrep
.
[[ $NOEXT =~ -20[0-9]{2}-[0-9]{2}-[0-9]{2}- ]]
ymd=${BASH_REMATCH[0]}