파일의 내용을 가져와야 하는데 파일이 없으면 오류가 발생하지 않도록 하고 싶습니다.
이런 일이 가능합니까?
cat my-file.txt || false
답변1
당신에게는 여러 가지 선택이 있습니다
파일이 존재하지 않는 한 인쇄하지 마세요. 하지만
cat
파일이 존재하지만 열 수 없는 경우에는 여전히 불평을 허용합니다.[ -f my-file.txt ] && cat my-file.txt
리디렉션을 통해 어떤 이유로 파일을 열 수 없을 때 생성되는 오류 메시지가 인쇄되지 않도록 하세요.표준 에러"아무데도"
cat my-file.txt 2>/dev/null
$?
오류가 발생했음을 나타내는 0이 아닌 종료 상태를 설정하지 마십시오 .cat my-file.txt || true
처음 두 경우에 다음 명령은 성공 여부를 확인하기 위한 상태 테스트일 수 있습니다 cat
. 예를 들어
cat my-file.txt 2>/dev/null
[ $? -ne 0 ] && echo 'There was an error accessing my-file.txt'
또한 다음과 같이 더 읽기 쉬운 조건문으로 래핑할 수 있습니다.
if ! cat my-file.txt 2>/dev/null
then
echo 'There was an error accessing my-file.txt'
fi
if
마지막 경우에는 종료 상태를 성공적으로 숨겨 cat
복합 명령의 종료 상태를 다음과 같이 만들기 때문에 명령문에서 명령을 사용할 필요가 없습니다.언제나0입니다(어떤 면에서는 "오류를 방지"합니다).
답변2
표준 오류 끄기 2>&-
:
cat my-file.txt 2>&- || false
위아래로:2>&-, 2>/dev/null, |&, &>/dev/null 및 >/dev/null 2>&1의 차이점