와일드카드 및 $#

와일드카드 및 $#

내 쉘 스크립트에 3개의 매개변수가 있다고 가정해 보겠습니다.

./myscript dir1 material dir2

스크립트의 원래 매개변수 3개 개수가 아니라 $#사용된 항목 개수를 보고 해야 합니다 .dir1/*

이 코드를 어떻게 적용할 수 있는지 아시나요?

답변1

for  arg
do   set -- "$arg/"*
     [ -e "$1" ]  &&
     printf '%s/*:\t%d\n'  "$arg" "$#"
done

이러한 루프를 실행한 후 원래 매개변수를 유지하려면 다음을 수행하십시오.

argc=$#
for  arg
do   set -- "$arg/"* "$@"
     [ -e "$1" ]  &&
     printf '%s/*:\t%d\n' "$arg" "$((${#}-argc))"
     shift "$((${#}-argc))"
done

관련 정보