문제

내가 찾는 것에 대한 기본적인 루프 다음과 같:

for(int i = 0; i < MAX; i++) {
  doSomething(i);
}

하지만 bash.

도움이 되었습니까?

해결책

이 사이트:

for i in $(seq 1 10);
do
    echo $i
done

다른 팁

for ((i = 0 ; i < max ; i++ )); do echo "$i"; done

Bash for 구성에 변수(반복기)목록의 단어가 반복기는 것입니다,잘 반복.

그래서,당신은 당신이 제한되어 있어 단어의 목록을 그냥 넣어서 그들의 구문은 다음과 같습니다.

for w in word1 word2 word3
do
  doSomething($w)
done

아마 당신을 반복하는 일부를 따라 숫자를 사용할 수 있도록 seq 명령 목록을 생성하는 숫자의 당신을 위해:(1~100 예를 들어)

seq 1 100

에서 사용 FOR loop:

for n in $(seq 1 100)
do
  doSomething($n)
done

참고 $(...) 문입니다.그것은 bash 행동,그것은 당신이 통과 출력에서 하나의 명령(에서 우리의 경우터 seq 이)다른( for)

이것은 정말 유용이 있을 때를 통해 반복하는 모든 디렉토리에서 일부 경로,예를 들어:

for d in $(find $somepath -type d)
do
  doSomething($d)
done

가능성은 무한하를 생성하는 목록이 있습니다.

Bash 3.0+ 할 수 있는 구문을 사용:

for i in {1..10} ; do ... ; done

..을 피하는 산란을 외부 프로그램을 확장하는 순서(등 seq 1 10).

물론,이것은 동일한 문제로 for(()) 솔루션,연결되는 강타하고 심지어 특정 버전(이 사).

bash 내장 도움말:


$ help for

for: for NAME [in WORDS ... ;] do COMMANDS; done
    The `for' loop executes a sequence of commands for each member in a
    list of items.  If `in WORDS ...;' is not present, then `in "$@"' is
    assumed.  For each element in WORDS, NAME is set to that element, and
    the COMMANDS are executed.
for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done
    Equivalent to
        (( EXP1 ))
        while (( EXP2 )); do
            COMMANDS
            (( EXP3 ))
        done
    EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is
    omitted, it behaves as if it evaluates to 1.


나는 일반적으로 다음과 같이 사용하는 약간의 변형에 대한 표준다.제가 자주 사용하여 이 명령을 실행에서 일련의 원격 호스트.이용 bash 의 중괄호 확장을 만들기 위한 루프를 만들 수치한 루프가 있습니다.

예제:

고 싶은 실행 가동 시간 명령 프론트 엔드에 hosts1-5 과 백엔드 호스트 1-3:

% for host in {frontend{1..5},backend{1..3}}.mycompany.com
    do ssh $host "echo -n $host; uptime"
  done

나는 일반적으로 실행으로 이것을 하나의 줄 명령으로 세미콜론으로의 끝 부분에 라인을 대신 더 읽기 버전이다.키 사용을 고려사항은 그 중괄호를 지정할 수 있도록 여러 값을 삽입할 수 있는 문자열(예:pre{foo,바}포스트 결과에 prefoopost,prebarpost)허용 및 계산/시퀀스를 사용하여 더블 마침표(사용할 수 있습니다.z etc.).그러나,두 기간 구문가의 새로운 기능을 강타 3.0;이전 버전을 지원하지 않는다.

#! /bin/bash

function do_something {
   echo value=${1}
}

MAX=4
for (( i=0; i<MAX; i++ )) ; {
   do_something ${i}
}

여기에는 예할 수 있도에서 껍질적인에 대한 큰 수:

Z=$(date) awk 'BEGIN { for ( i=0; i<4; i++ ) { print i,"hello",ENVIRON["Z"]; } }'

하지만 행운을하고 유용한 것들을 내부의 awk: 어떻게 사용하는 쉘 변수를 awk 스크립트를 사용해야 할까요?

만약 당신이 intereased 만에서는"((...))"솔루션을 제시 위에 최고입니다,하지만 당신이 원하는 무언가 POSIX SH 준수하는 것이 작업에 모든 unices 를 사용해야 합"expr"과하는 동안"",그리고 그 때문이다"(())"또는"seq"또는"i=i+1"되지 않는 휴대용 중 다양한 조개

내가 사용하여 변화의 이 모든 과정된 파일을 만들거나 수정합니다.

에서 파일을*.로그하 echo"할 물건:$files";echo"더 많은 물건:$files";료

면 처리 목록은 파일입니다 무엇에 관심이 있으로 보고 -execdir 옵션 .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top