bash のブレース展開は、組み合わせを生成できます。
printf -- "- abc(%s}\n" {i,},{j,},{k,}
しかし、それよりももう少しダイナミックにしたいと思います。これは見苦しいコードですが、機能します。
while IFS= read -r line; do
# match a line that looks like a function,
# and capture the function name and the parameter list
if [[ $line =~ " - "([[:alnum:]]+)\(([a-z,]+)\) ]]; then
funcname=${BASH_REMATCH[1]}
# split the comma-separated parameters into an array
IFS=, read -ra params <<< "${BASH_REMATCH[2]}"
# create the brace-expansion string
printf -v combos "{%s,}," "${params[@]}"
# and this is the command to print out the combinations
cmd=( printf -- "\"- $funcname(%s)\n\"" ${combos%,} )
# now evaluate it
eval "${cmd[@]}"
fi
done <<END
- abc(i,j,k)
END
- abc(i,j,k)
- abc(i,j,)
- abc(i,,k)
- abc(i,,)
- abc(,j,k)
- abc(,j,)
- abc(,,k)
- abc(,,)