2

MWE:

caption()
{
    echo "$@"
    echo "$@" | sed 's/./-/g'  # -> SC2001
}

caption "$@"

I'd like to use parameter expansion in order to get rid of the shellcheck error. The best idea I had was to use echo "${@//?/-}", but this does not replace spaces.

Any ideas?

Johannes
  • 2,901
  • 5
  • 30
  • 50

1 Answers1

3

You can use $* to save it in a local variable:

caption() {
   local s="$*"
   printf '%s\n' "$s" "${s//?/-}"
}

Test:

caption 'SC 2001' foo bar

SC 2001 foo bar
---------------
anubhava
  • 761,203
  • 64
  • 569
  • 643