![명령이 0이 아닌 종료 코드를 반환하는 경우 기본값을 제공합니다.](https://linux55.com/image/83433/%EB%AA%85%EB%A0%B9%EC%9D%B4%200%EC%9D%B4%20%EC%95%84%EB%8B%8C%20%EC%A2%85%EB%A3%8C%20%EC%BD%94%EB%93%9C%EB%A5%BC%20%EB%B0%98%ED%99%98%ED%95%98%EB%8A%94%20%EA%B2%BD%EC%9A%B0%20%EA%B8%B0%EB%B3%B8%EA%B0%92%EC%9D%84%20%EC%A0%9C%EA%B3%B5%ED%95%A9%EB%8B%88%EB%8B%A4..png)
파일에 일부 구성이 있고 해당 파일을 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"에 있는 내용이 무엇이든 출력된다고 알립니다.