for 루프 내부의 Linux bash if 문

for 루프 내부의 Linux bash if 문

숫자 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[[]]

관련 정보