chmod + 자동 모드 + 오류에도 불구하고 강제 종료 코드 0


37

chmod를 실행하고 명령의 오류를 무시할 수 있습니까?

예 (예를 들어 file.txt가 존재하지 않음)

입력 할 때

chmod 777 file.txt

출력에 오류가 발생합니다

  chmod: cannot access file.txt : no such file or directory

그래서 다음과 같이 명령에 -f 플래그를 추가합니다 : (case.을 표시하기 위해 file.txt가 없습니다)

  chmod -f 777 file.txt
  echo $?
  1

그러나 chmod return 예제에서 1

오류가 발생하더라도 chmod 명령이 종료 코드 0을 지정하도록 강제하는 방법


왜 그렇게 불쾌한가요? 불필요한와 출력 억제 2>/dev/null및 사용 set -e스크립트를.
ott--

답변:


47

오류가 발생하더라도 chmod 명령이 종료 코드 0을 지정하도록 강제하는 방법

chmod -f 777 file.txt || :

실패하면 :, 즉 null 명령을 실행 chmod합니다. null 명령은 아무 것도 수행하지 않고 항상 성공하므로 종료 코드 0이 표시됩니다.


25
동일하지만 일반 사용자가 읽을 수있는 내용은 다음과 같습니다.chmod -f 777 file.txt || true
orion

2
@ 오리온에 따라 다릅니다. 친숙한 사람이라면 :누구나 읽을 수있는 것처럼 보입니다.
devnull

2
그러나 멍청한 놈들이 읽을 수있는 더 읽기 쉬운 코드를 작성한다면, 우리는 어떻게 일을 유지할 것입니까?
Nick T

1
주방장 개발자가 여기에 나와 같은 문제가 발생한 다른 사람들을 돕기 위해 핵심 단어를 삭제합니다. shell_out! (cmd + '|| true')은 설치시 dem 등원이되고 shell_out을 무시해야 할 때 생명의 은인입니다! 컴파일 오류.
JackChance

53

chmod -f 777 file.txt || true

OR이므로 명령문 중 하나가 true를 리턴하면 리턴이 true입니다. 종료 상태가 0이됩니다.


3
읽을 수있는 코드 작성 연습을 촉진하기위한 대안으로이 답변을 추가했습니다.
Gerry

2
성공 ||하면 오른쪽 분기가 실행 chmod되지 않습니다 ... 여기서 계산상의 차이가 많은 것은 아닙니다.
dhag

고마워 내가 엉망이 된 것을 믿을 수 없다. :) 수정하여 편집했습니다.
Gerry

5

나는 항상 사랑했다

 chmod -f 777 file.txt || exit 0

3
chmod가 실패했을 때 스크립트가 중지됩니다. 문제는 스크립트에 문제가있을 때 스크립트를 계속 실행시키는 것입니다 (오류 무시).
Veda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.