![for 루프 내부의 Linux bash if 문](https://linux55.com/image/81417/for%20%EB%A3%A8%ED%94%84%20%EB%82%B4%EB%B6%80%EC%9D%98%20Linux%20bash%20if%20%EB%AC%B8.png)
숫자 10을 제외한 각 숫자에 인사하면서 1부터 30까지 반복하려고 합니다. 이것이 내가 가지고 있는 것이지만 작동하지 않습니다
for i in {1..30}; do if [i != 10]; then echo "hello $i"; fi; done
내 출력은 bash [i: 명령을 찾을 수 없음 - 30회입니다.
답변1
귀하의 if
진술이 잘못되었습니다 if [ $i != 10 ]
. 주변 공백은 [
필수이며 변수를 읽는 경우 $
앞에 기호가 있어야 합니다.
for i in {1..30}; do if [ $i != 10 ]; then echo "hello $i"; fi; done
답변2
if
테스트 명령. 이는 마지막 인수로 기대하는 명령( 또는 내장 명령(보통 후자)) if [ ... ]
이기 때문에 작동합니다 (그냥 보기 좋게 만들기 위한 것임). 그러나 또한 평소와 같이 공백으로 구분된 목록으로 전달되어야 하는 매개변수가 필요합니다. [
/usr/bin/[
]
사용하고 싶지 않다면 [
다음과 같이 할 수 있습니다.
if test $i != 10; then
동작은 똑같습니다.
[[
아니면, 있어요세게 때리다>
, 이는 올바른 구문 구조이며, 또는 와 같은 것을 사용할 수 있는 별도의 컨텍스트를 생성합니다. 이 컨텍스트의 의미는 일반적인 명령 호출( 그리고 단지 명령 호출일 뿐입니다) &&
에서 의미하는 것과 다르지만 Spaces 및 여전히 필요합니다 .[
test
[[
]]