set -u
será abortado exatamente como você descreve se você referenciar uma variável que não tenha sido definida. Você está invocando seu script sem argumentos, portanto, get_percent
está sendo invocado sem argumentos, fazendo com que $1
seja cancelado.
Verifique isso antes de invocar sua função ou use expansões padrão ( ${1-default}
expandirá para default
, se ainda não estiver definido para outra coisa).