나는 bash에서 스크립트를 작성하고 있습니다.
Foo 디렉터리에 있는 경우 foo 뒤에 최대 3개의 숫자가 포함된 foo라는 이름의 foo 하위 디렉터리에서만 이 스크립트를 실행하고 싶습니다.
예: foo1, foo23, foo345 등
테스트는 내 스크립트의 이름입니다.
이것이 내가 지금까지 가지고 있는 것입니다. 이 스크립트에서 검색할 디렉터리를 정확히 지정하는 방법을 기억할 수 없습니다.
다른 중요한 사항: 저는 SSH 클라이언트에서 실행 중입니다.
for i in foo*
do
if [ -d $i ]
then
sh ./test
echo "Test is working."
fi
done
답변1
이것옳은이를 수행하는 방법은 스크립트가 디렉토리를 매개변수로 사용하도록 하는 것입니다.
for directory in foo*/
do
./test.sh "$directory"
done
루프의 후행 슬래시는 for
디렉터리 및 디렉터리에 대한 심볼릭 링크를 반복하도록 보장합니다. 디렉터리를 스크립트에 전달하면 스크립트와 대상 디렉터리를 이동할 수 있습니다.어딘가에작동시키기 위해 특별한 작업을 수행할 필요는 없습니다.
보다 구체적으로 디렉토리를 선택하려면 다음을 읽어야 합니다.구체, 특히 extglob
.