디렉토리를 변경하여 각 디렉토리에서 작업을 수행하고 싶습니다. 되는 다음 코드 :리눅스에서 루프를 사용하여 디렉토리를 변경하십시오.
for i in {1..10}
do
cd dir/subdir$i
bla... bla.. bla..
done
그러나 나는 점점 오전 오류 :
cd $(echo dir/subdir"$i")
cd $(eval dir/subdir"$i")
디렉토리를 변경하여 각 디렉토리에서 작업을 수행하고 싶습니다. 되는 다음 코드 :리눅스에서 루프를 사용하여 디렉토리를 변경하십시오.
for i in {1..10}
do
cd dir/subdir$i
bla... bla.. bla..
done
그러나 나는 점점 오전 오류 :
cd $(echo dir/subdir"$i")
cd $(eval dir/subdir"$i")
이 문제는 아마도 때문이다 : 나는 다음하지만 여전히 같은 위의 오류가 시도
not found [No such file or directory]
변경하려는 모든 디렉토리는 원래 기본 디렉토리에서 상대적입니다.
이for i in {1..10}; do
cd dir/subdir$i || continue
cmd1
cmd2
cd "$OLDPWD"
done
또 다른 방법은 pushd
및 popd
을 사용하는 것입니다
for i in {1..10}; do
(
cd dir/subdir$i || continue
cmd1
cmd2
)
done
또 다른 방법은 cd "$OLDPWD"
를 사용하여 이전 디렉토리로 반환하는 것입니다 :이 문제를 해결하기 위해 한 가지 방법은 (...)
서브 쉘을 사용하고 있습니다 :
for i in {1..10}; do
pushd dir/subdir$i || continue
cmd1
cmd2
popd
done
오프 주제어 때문에 이미 upvoted : 'cd1'과'cmd2'는'cd'가 실패 할 때 생략되어야한다고 생각합니다. 아마도'cd dir/subdir $ i && cmd1 && cmd2'를 제안 할 것입니다. –
@WalterA 좋은 지적, 고마움, 나는 내 대답을 고쳤다. – janos
https://stackoverflow.com/questions/255414/why-doesnt-cd-work-in-a-bash-shell-script –
첫 번째 형식은 괜찮지 만 원래 디렉토리로 돌아가거나 서브 쉘에서 cd'ing (그리고 연산)을하고 있는지 확인해야합니다 (즉,'cd dir/subdir $ i ; bla bla bla; – PSkocik
'cd//subdir $ i'을 주려고합니다. –