ワイルドカードと$#

ワイルドカードと$#

私のシェルスクリプトに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

おすすめ記事