Чтобы понять подобные проблемы, добавьте set -x
перед кодом.Это скажет вам, что ${2:-0}
расширен до 0
.Оболочка считает, что это команда, и пытается ее выполнить.
Это будет легче понять, если вы посмотрите на этот код:
cmd=echo
${cmd} test
Если вы запустите это, ${cmd}
будетзаменено на echo
.
В вашем коде вы, вероятно, захотите присвоить результат ${2:-0}
новой переменной:
foo=${2:-0}