cadeia de caracteres inválida no KSH, mas não no BASH

1

Eu tento gerar uma string aleatória usando este comando:

tr -dc 'A-Za-z0-9!#$%&()*+,-./:;<=>?@[\]^_'{|}~' </dev/urandom | head -c16; echo; 

Eu preciso colocar esse comando em uma função dentro de um script de shell que precisa ser executado no AIX e no Linux. Como o bash não está instalado em nossas máquinas AIX, eu preciso usar o ksh93. Quando tento executar este comando no bash (ou zsh), ele funciona como esperado. Mas no KSH ele falha com 'string de origem inválida'.

Eu tentei reorganizar a string e excluí alguns dos caracteres, mas sem sucesso. A saída é

tr: A-Za-z0-9!#$%&()*+,-./:;<=>?@[\]^_'{|}~: invalid source string

Como eu preciso passar essa string para o ksh para que isso funcione?

Obrigado antecipadamente

    
por Joerg 03.01.2018 / 14:28

1 resposta

1

Obrigado pela entrada @ glenn-jackman:

Quando eu removo

\

da lista, recebi o erro obout

invalid multibyte character byte

mas eu já sabia que LC_ALL deve ser definido para evitar isso. Eu escapei da corda agora. O snippet em funcionamento é

LC_ALL=C tr -dc 'A-Za-z0-9!#$%&()*+,\-./:;<=>?@[\]^_'{|}~' < /dev/urandom | head -c16; echo;

Obrigado

    
por 03.01.2018 / 20:00

Tags