어떤 경우에는 함수를 실행하고 호출자에게 반환해야 하는데 이것이 제게는 효과적입니다.
if tst; then
echo "success"
else
echo "failure"
fi
function tst () {
return 0;
}
그러나 바로가기 구문을 사용하면 이 작업을 수행할 수 없는 것 같습니다. if [[ tst = true ]] 또는 if it = "0" 테스트를 포함하여 다음 명령문의 다양한 조합을 시도했지만 알아낼 수 없습니다.
[[ tst ]] && echo "success" || echo "failure"
bash 단축 구문을 사용하여 if 조건에서 함수를 테스트하는 올바른 방법은 무엇입니까?
답변1
를 사용한다고 가정하고 A && B || C
함수를 직접 호출하면 됩니다.
tst && echo "success" || echo "failure"
다음을 사용하려면 종료 값을 사용해야 합니다 [[
.
tst
if [[ $? -eq 0 ]]
then
...
답변2
(이것은 실제로 답변이 아니며 더 많은 의견입니다)
a && b || c
단축키 에 주의해야 합니다 .
a
성공이 반환 되면b
실행b
나중에 종료 상태가 반환되면 이 역시c
실행됩니다.
$ [[ -f /etc/passwd ]] && { echo "file exists"; false; } || echo "file does not exist"
file exists
file does not exist
if a; then b; else c; fi
c
에 의존하지 않기 때문에 이 점에서는 더 안전합니다 b
.a
$ if [[ -f /etc/passwd ]];then { echo "file exists"; false; }; else echo "file does not exist"; fi
file exists
$ echo $?
1