내가라는 디렉토리가 /tmp/main
있고 그 안에 100 개의 다른 디렉토리가 있다고 가정 해 봅시다 .
예를 들어 파일을 만들기 위해 해당 디렉토리의 각 디렉토리를 통해 루프를 실행하고 싶습니다. touch test.txt
첫 번째, 두 번째, 세 번째 등을 처리하도록 스크립트에 어떻게 지시합니까?
간단한 루프가 작동합니다.
for dir in /tmp/main/*/; do
touch "$dir"/test.txt
done
/
패턴의 끝은 /tmp/main/*/
패턴이 아무것도 일치하는 경우,이 디렉토리를 일치 보장합니다.
에서는 패턴이 일치하지 않는 경우 루프가 전혀 실행되지 않도록 루프 전에 쉘 옵션 bash
을 설정할 수 있습니다 . 설정 하지 않으면 루프는에서 확장되지 않은 패턴으로 한 번 실행됩니다 . 이 문제를 해결하는 또 다른 방법은 다음을 호출하기 전에 실제로 디렉터리 인지 확인하는 것 입니다 .nullglob
shopt -s nullglob
nullglob
$dir
$dir
touch
for dir in /tmp/main/*/; do
if [ -d "$dir" ]; then
touch "$dir"/test.txt
fi
done
또는 동등하게
for dir in /tmp/main/*/; do
[ -d "$dir" ] && touch "$dir"/test.txt
done
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다