Существуют различия между встроенной функцией printf и /usr/bin/printf, вторая делает «то, что вы имеете в виду» без этих надоедливых ошибок.
printf "-----" # error
printf -- "-----" # ok
/usr/bin/printf "-----" # ok
/usr/bin/printf -- "-----" # ok