1부터 1000까지 순차적으로 번호가 매겨진 폴더가 있는 디렉터리가 있는데 이 디렉터리 내의 특정 폴더에 대해 작업을 수행하고 싶습니다. 즉, 폴더 1~50입니다. 루프의 시작점과 끝점을 어떻게 정의하나요?
지금까지 다음과 같은 스크립트가 있습니다.
a=1
b=1
for i in ~/PATH/*/ ;do
(cd $i/ && action)
echo "completed"
a=`expr $a + $b`
echo "Next Folder"
done
a=를 변경하여 루프의 시작을 정의할 수 있지만 루프의 끝을 어떻게 정의해야 할지 모르겠습니다. 현재로서는 해당 디렉터리의 모든 폴더를 계속 반복합니다. 감사해요:)
답변1
seq
반복할 목록을 생성하려면 다음 명령을 사용하십시오 .
for nn in $(seq 1 50) ; do
(cd someprefix/$nn && action)
done
또는 쉘이 지원하는 경우버팀대 확장:
for nn in {1..50} ; do
(cd someprefix/$nn && action)
done
답변2
for
Bash에서는 표준 C 루프와 유사한 루프를 사용할 수 있습니다 .
for (( i = 1; i <= 50; ++i )); do
( cd $i && action )
done
디렉터리 경로나 다른 경로 cd $i
로 변경합니다 .cd "$HOME/PATH/$i"
답변3
#!/bin/bash
a=1
b=1
cd ~/PATH/
for i in $(ls -v) ;do
(cd $i/ && action) && echo "completed" || echo "error"
a=$((a+b)); [ "$a" -gt 50 ] && break
echo "Next Folder"
done
답변4
while 루프를 만들 수도 있습니다.
a=1
while [ $a -le 50 ]; do
(cd $a/ && action)
a=$((a+1))
done
또는 다른 옵션:
a=1
while (( ++a<=50 ));do
(cd $a/ && action)
done