답변:
블로거가 옳다. 그러나 구문을 정확히 기록하는 것이 중요합니다. 대화식 셸 (예 : 터미널)을 사용하는 경우
echo -n; for i in {1..5}; do if [[ $? ]]; then foo; fi; done
"$?" 이전 함수 호출의 상태를 반환합니다. "echo"를 먼저 호출하기 때문에 루프의 첫 번째 반복은 "true"(bash에서는 0)가됩니다. "fi"는 "if"문을 닫고 세미콜론이 필요합니다.
만약 당신이 bash 스크립트를 작성했다면 똑같은 것이있다.
#! / bin / bash
에코 -n
나는 {1..5}에 속해있다. 해야 할 것
[[$? ]]; 그때
푸
fi
끝난
당신은 foo가 세미콜론을 가지고 있지 않다는 것을 알게 될 것이다; 줄 바꿈이 가능한 환경 (예 : 자주 사용하는 텍스트 편집기)에서 bash 스크립트를 작성할 때 줄 바꿈은 세미콜론과 동일한 작업을 수행합니다. :)
또한, 대신에
[[ $? ]] && foo
if 문 대신; & amp; & amp; 이전 foo에 오류가없는 경우에만 foo가 실행됨을 의미합니다. 즉 함수 호출에서
thing1 && thing2
thing2가 잘 실행되면 thing2 만 실행됩니다 (기술적으로 0 값을 반환하는 경우) foo가 작동하는지 여부를 무시하려면 & amp; & amp; amp; 대신에 세미콜론을 사용하십시오.
나는 훌륭한 방법을 발견했다. 이리 .
나는 그것이 여전히 "스크립트의 종류"라는 것을 알고 있지만 명령으로 전체 커맨드 라인을 타이핑하지 않고 얻을 수있는 가장 가까운 것이라고 생각한다.
명령을 작성할 수 있습니다. repeat
이 작업을 통해 다음 작업을 수행 할 수 있습니다.
repeat 5 ./foo
끝 부분에 다음 줄을 추가하십시오. ~/.bashrc
(bash를 사용하는 경우) :
repeat() {
n=$1
shift
while [ $(( n -= 1 )) -ge 0 ]
do
"$@"
done
}
다음에 로그인 할 때 (또는 bash를 시작할 때) 사용할 수 있습니다. repeat 5 ./foo
.
Btw. repeat
csh, tcsh 및 zsh에서 이미 키워드 (정확히 동일 함)이므로이 값을 추가하면 bash
그것은 똑같이 작동 할 것입니다.
for
, 당신은 사용할 수 있습니다.watch
,이 StackOverflow 질문