코드> 다른 것은 첫째 ELIF로 건너 뜁니다.배쉬 경우 - -> 다음 경우
0
A
답변
1
아래 코드에서 elif cond3
이후에 elif
이 있으면 무엇이든간에 elif quux...
은 자리 표시 자입니다.
당신은
을 건너 뛰는에 cond3
을 테스트 할 필요가없는 경우 (당신이 cond3
이 거짓 인 경우에도, 당신은 건너 뛸 때의 코드를 실행하려는입니다.)
를 @에 의해 제안 @의 fedorqui의 제안이 작동하는 곳
이foo() {
# do work
}
if cond1; then
if cond2; then
...
else
foo
fi
elif cond3; then
foo
elif quux...
는 또한 : code4me, 당신은 기능을 사용할 수
if cond1 && cond2; then
...
elif cond3; then
# do work
elif quux...
당신이
논리가 따라하기 어렵게 도착을 건너 뛰는에 cond3
을 테스트 할 수 필요성을 합니다. 나는 당신이 그 경우에 실행됩니다 어떤 코드에 대한 자리 표시 자로 doX
, doY
및 doZ
을 추가 한
if [cond1]
then
if [cond2]
then
doX
else
skip to elif
fi
doY
elif[cond3]
then
doZ
fi
:
foo() {
# Note the condition is tested here now
if cond3; then
# do work
fi
}
if cond1; then
if cond2; then
...
else
foo
fi
else
# This code is carefully constructed to ensure that subsequent elifs
# behave correctly
if ! foo; then
# Place the other elifs here
if quux...
0
그래서 여기에 코드입니다.
- :
[cond1]
이 사실이고[cond2]
이[cond1]
이 사실이고[cond2]
는 doZ
때 중 하나를 실행에 해당하는 경우doY
실행에 해당하는 경우doX
실행 : 그래서,이 있음을 의미[cond1]
이 참이고[cond2]
이 거짓이고[cond3]
이 참일 경우[cond1]
는 거짓과[cond3]
이이 코드를이 대신 같은 기록 될 수 있다는 것을 의미한다
사실이다 :
if [cond1] && [cond2]
then
doX
doY
elif [cond3]
doZ
fi
편집 : @fedorqui 실제로 주석이 제안 것 같습니다.
0
첫 번째 if
섹션의 중간에서 코드를 실행하기를 원한다고 elif
이 무엇을하는지 알기가 어렵습니다. 그 부분이 elif
일 필요가있는 부분입니까?
그렇지 않은 경우 if
문을 코드화하여 condition2
을 고려해 볼 수 있습니다. 모두 조건 1이 및조건 2은 사실이 아니다 해당하는 경우
if [ condition1 -a ! condition2 ]
then
....
elif [ condition3 -o condition1 ]
....
fi
이제 if
절은 실행됩니다. else 절의 내부에서 조건 2을 확인할 필요가 없습니다. 중 하나조건 3이이 참 또는조건 1에 해당하는 경우 귀하의 elif
절에서
, 당신은 실행됩니다. 기본적으로 조건 1이 참일 경우에만 실행됩니다. 조건 2도 참입니다. 그렇지 않으면 if
절을 실행했을 것입니다. 그런데
elif
조건에 or
절을 추가해야합니다. 조건 1이 참일 경우 조건 2이 참이지만 조건 3이 거짓입니까? 그 elif
절을 실행하고 싶습니다. 권리?
기능이 필요한 것 같습니다. –
어떻게 든이 블록을 벗어나는 것은 나쁜 사례입니다.이 경우 어떤 종류의 심각한 스파게티 코드로 이어질 것입니다. 함수를 작성하고 두 위치에서 호출하십시오. – Buggabill
'if cond1 && cond2, elif cond3'? – fedorqui