명령이 0이 아닌 종료 코드로 반환되는 경우 기본값을 제공하십시오.

명령이 0이 아닌 종료 코드로 반환되는 경우 기본값을 제공하십시오.

파일에 일부 구성이 있고 해당 파일 config을 원합니다 cat. 그러나 때로는 config존재하지 않는 경우도 있습니다. 이 경우 명령이 기본값을 출력하도록 하고 싶습니다.

아마도 다음과 같이 작동했을 것입니다.

$ ls
$ cat config || echo 42
42
$ echo 73 > config
$ cat config || echo 42
73

답변1

당신의 구조는 괜찮습니다. 당신은 다음과 같은 일을 할 수도 있습니다

cat config || cat defaultconfig

임의의 명령(예: 주석)을 사용하는 경우 ./get_config_from_web해당 명령이 합리적인 반환 상태를 제공하는지 확인해야 합니다. 이는 까다로울 수 있습니다. 쉘 스크립트는 실행된 마지막 명령의 결과만 반환하므로 exit결과로 다른 것을 원하는 경우 이를 수행해야 합니다 .

답변2

다음은 포착되지 않은 오류 조건에 대해 42를 표시합니다.

trap "echo 42" ERR

이를 구성 가능한 변수로 만들 수 있습니다.

trap 'echo "${CONFIG:=42}"' ERR  # if $CONFIG is not set, it will be defaulted to 42

답변3

if [ -a config ]; then cat config; else echo ${DEFAULT};fi

DEFAULT 변수가 미리 어떤 것으로 설정되어 있다고 가정합니다.

답변4

if 문에서 종료 코드를 사용할 수 있습니다.

#!/bin/bash
cat config
if [[ "$?" -ne "0" ]]; then
    echo "VALUE"
fi

이전 명령이 성공하면 "0" 값으로 종료됩니다. 따라서 다른 종료(실패) 시 "VALUE"에 있는 내용이 무엇이든 출력된다는 의미입니다.

관련 정보