다음 .sh 파일을 실행하면
#!/bin/sh -a
echo "a" | sed -e 's/[\d001-\d008]//g'
결과는 오류입니다 :
sed : -e expression # 1, char 18 : 유효하지 않은 범위 끝
그러나 다음 .sh 파일을 실행하면
#!/bin/sh
set -a
echo "a" | sed -e 's/[\d001-\d008]//g'
오류없이 실행됩니다. 두 번째 코드는 첫 번째 코드와 동일하지 않습니까? 첫 번째 오류가 왜 발생합니까?
LC_COLLATE=C
(또는 POSIX
)sed
POSIXLY_CORRECT=y
환경에 없습니다 POSIXLY_CORRECT
. 두 스크립트를 호출하는 쉘 POSIXLY_CORRECT
은 환경에 없습니다 .
echo "a" | POSIXLY_CORRECT=y sed -e 's/[\d001-\d008]//g'
문제를 재현하라
sh
같은 것은 아닙니다 . 모든 sed도 동일하지 않습니다. 어느sh
것을 사용하고 있습니까? 어느 OS에서? 그리고 어느 sed (sed --version
실패하지 않습니까?)