파일을 읽어 stderr 리디렉션

파일을 읽어 stderr 리디렉션

다음과 같이 파일 내용을 변수로 읽었습니다.

var=$(<somefile)

하지만 파일이 존재하지 않으면 해당 오류 메시지가 나타납니다.

bash: somefile: No such file or directory

cat 명령을 사용하지 않고 stderr를 >/dev/null로 리디렉션할 수 있습니까?

답변1

이 경우 다음을 사용할 수 있습니다 cat.

var=$( cat somefile 2>/dev/null )

또는 파일이 먼저 존재하는지 테스트하십시오.

if [ -f somefile ]; then
    var=$(<somefile)
fi

이전 예제의 경쟁 조건을 피하려면(이론적으로 테스트와 읽기 사이에 파일이 사라질 수 있음):

if cp somefile myname 2>/dev/null; then
    var=$(<myname)
    rm -f myname
fi

다음은 작동하지 않습니다:

var=$(<somefile) 2>/dev/null
var=$(<somefile 2>/dev/null)

답변2

당신은 그것을 사용할 수 있습니다 :

{ var=$(<somefile); } 2> /dev/null

관련 정보