shopt -s extglob
é específico do bash ( shopt
sozinho é específico do bash, bash
é o único shell que possui dois conjuntos de opções)
A opção extglob
em bash
ativa o suporte para os globs estendidos do ksh. Não é necessário em ksh, mas note que em ksh esses globs não são reconhecidos quando usados em variáveis.
printf -v
é uma extensão bash
. Não é suportado e não é necessário em ksh93 porque lá, a substituição de comando não bifurca um subshell. Então, ao invés de:
printf -v var ...
use
var=$(printf ...)
ou em ksh93:
var=${ printf ...;}
se argumentos para printf
devem fazer alterações no ambiente (como em ${foo=bar}
ou $((n++))
)
.
(embora note que ele remove caracteres de nova linha).
Observe também que o ksh93 suporta aritmética de ponto flutuante, ao contrário de bash
, então você não precisa recorrer a esse tipo de hack.
Além disso, não consigo ver nada que explique a mensagem de erro que você está recebendo.