Bash의 조건부로 "아무것도 하지 않음"을 의미하는 명령어는 무엇입니까?
때때로 조건을 만들 때, 나는 아무것도 하지 않는 코드가 필요합니다. 예를 들어, 여기서, 나는 Bash가 다음 때 아무것도 하지 않기를 원합니다.$a"10"보다 큰 경우, "1"을 인쇄합니다.$a는 "5"보다 작으며, 그렇지 않으면 "2"를 인쇄합니다.
if [ "$a" -ge 10 ]
then
elif [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
하지만 이것은 오류를 만듭니다.스크립트 속도를 늦추지 않고 아무것도 하지 않는 명령이 있습니까?
셸의 no-op 명령은 다음과 같습니다.:(계속).
if [ "$a" -ge 10 ]
then
:
elif [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
bash 매뉴얼에서:
:(콜론)
인수를 확장하고 리디렉션을 수행하는 것 외에는 아무것도 수행하지 마십시오.반환 상태는 0입니다.
당신은 아마도 그냥 사용할 수 있습니다.true명령:
if [ "$a" -ge 10 ]; then
true
elif [ "$a" -le 5 ]; then
echo "1"
else
echo "2"
fi
예를 들어 다음과 같은 경우(모든 경우는 아니지만) 다른 경우에 다시 주문하는 것이 있습니다.
if [ "$a" -le 5 ]; then
echo "1"
elif [ "$a" -lt 10 ]; then
echo "2"
fi
no-op 명령과 관련된 원래 질문에 답하지는 않지만, "이 분기에서 나는 아무것도 하지 않으면 안 된다"고 생각하는 많은 (대부분은 아니더라도) 문제는 이 분기가 발생하지 않도록 로직을 재구성하는 것만으로 무시할 수 있습니다.
OPs 예제를 사용하여 일반적인 규칙을 제공하려고 합니다.
$a가 "10"보다 클 때는 아무것도 하지 않습니다. $a가 "5"보다 작으면 "1"을 인쇄하고, 그렇지 않으면 "2"를 인쇄합니다.
우리는 지점을 피해야 합니다.$a10개 이상을 얻음, 그래서.$a < 10일반적인 조건은 다른 모든 조건에 적용될 수 있기 때문에, 다음 조건을 따릅니다.
일반적으로 X일 때 아무 것도 하지 않는다고 말할 때는 분기를 피하도록 X일 때 다시 표현합니다.일반적으로 X를 부정하고 다른 모든 조건에 적용하여 회피를 수행할 수 있습니다.
따라서 규칙이 적용된 OP 예제는 다음과 같이 재구성될 수 있습니다.
if [ "$a" -lt 10 ] && [ "$a" -le 5 ]
then
echo "1"
elif [ "$a" -lt 10 ]
then
echo "2"
fi
위의 변형일 뿐, 모든 것을 포함합니다.$a < 10조건:
if [ "$a" -lt 10 ]
then
if [ "$a" -le 5 ]
then
echo "1"
else
echo "2"
fi
fi
(이 구체적인 예로 @Flimzys 구조조정이 확실히 더 낫지만, 나는 아무것도 하지 않는 방법을 찾는 모든 사람들에게 일반적인 규칙을 주고 싶었습니다.)
대신 :, true, false 사용합니다.
echo -n ""
터미널의 빈 줄을 피합니다.
언급URL : https://stackoverflow.com/questions/17583578/what-command-means-do-nothing-in-a-conditional-in-bash
'programing' 카테고리의 다른 글
| "위치: 절대" 요소의 중심을 잡는 방법 (0) | 2023.04.27 |
|---|---|
| SQL Server 2008 Management Studio에서 텍스트 또는 막대(MAX) 열의 전체 내용을 보려면 어떻게 합니까? (0) | 2023.04.27 |
| MVC 5 액세스 클레임 ID 사용자 데이터 (0) | 2023.04.27 |
| wpf에서 버튼 테두리를 완전히 제거하려면 어떻게 해야 합니까? (0) | 2023.04.27 |
| 빌드 경로 오류가 해결될 때까지 프로젝트를 빌드할 수 없습니다. (0) | 2023.04.27 |