KSH 中的源字符串无效,但 BASH 中无效

KSH 中的源字符串无效,但 BASH 中无效

我尝试使用以下命令生成随机字符串:

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

我需要将该命令放入需要在 AIX 和 Linux 上运行的 shell 脚本中的函数中。由于我们的 AIX 机器上没有安装 bash,所以我需要使用 ksh93。当我尝试在 bash(或 zsh)中执行此命令时,它按预期工作。但在 KSH 中,它因“源字符串无效”而失败。

我尝试重新排列字符串并删除一些字符,但没有成功。输出是

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

我需要如何将此字符串传递给 ksh 才能使其正常工作?

提前致谢

答案1

感谢您的输入@glenn-jackman:

当我删除时

\

从列表中我收到错误 obout

invalid multibyte character byte

但我已经知道必须设置 LC_ALL 以避免这种情况。我现在逃脱了字符串。这在职的片段是

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

谢谢

相关内容