피쉬 쉘에서 명령을 n 번 실행하는 방법은 무엇입니까?

피쉬 쉘에서 명령을 n 번 실행하는 방법은 무엇입니까?

이것물고기 문서for루프를 실행하기 위해 다음 방법이 제공됩니다 .

for i in 1 2 3 4 5;
    echo $i
end

명령을 1000번 실행하고 싶다고 가정해 보겠습니다. 어떻게 해야 합니까?

답변1

동일한 문서,https://fishshell.com/docs/current/언어.html#loops-and-blocks:

for i in (seq 1 5)
    echo $i
end

seq 1 5예를 들어 14에서 1000까지의 숫자를 얻으려는 숫자로 바꾸십시오 seq 14 1000. 1부터 시작하려면 시작점을 생략할 수 있습니다 seq 1000.

그건 그렇고, 이것은 매우 고전적인 UNIX 쉘과 같으며 그다지 현대적인 느낌은 아닙니다. ( bash그리고 zsh당신은 할 수 있습니다 for i in {1..1000}. 이것은 읽기가 더 쉽고 깔끔하다고 생각합니다. seq실제로 외부 프로그램을 실행하고 출력을 버퍼링하는 데 시간이 절약된다는 것은 말할 것도 없습니다.)

coreutils에 의존하지 않는 또 다른 접근 방식(GNU 프로그램이나 POSIX 쉘이 아닌 경우 슬픈 일임)은 루프 while와 순수 Fish 내장 기능을 사용하는 것입니다.

set counter 0
# -lt: less than
while test $counter -lt 1000;
    set counter (math $counter + 1)
    echo $counter
end

답변2

seqgnu-coreutils에는 일련의 숫자를 인쇄하는 프로그램이 있는 것으로 나타났습니다 .

따라서 명령을 n 번 실행하려면 다음 루프를 사용할 수 있습니다.

for i in (seq n);
    echo $i
end

관련 정보