명령이 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"에 있는 내용이 무엇이든 출력된다고 알립니다.

관련 정보