我尝试使用以下命令生成随机字符串:
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;
谢谢