通配和 $#

通配和 $#

假设我的 shell 脚本有 3 个参数:

./myscript dir1 material dir2

我需要$#报告使用的项的计数dir1/*,而不是脚本的原始 3 个参数的计数。

你知道我可以用什么方法应用这个代码吗?

答案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

相关内容