다음 명령을 사용하여 임의의 문자열을 생성하려고 합니다.
tr -dc 'A-Za-z0-9!#$%&()*+,-./:;<=>?@[\]^_`{|}~' </dev/urandom | head -c16; echo;
AIX 및 Linux에서 실행해야 하는 쉘 스크립트의 함수에 이 명령을 넣어야 합니다. AIX 시스템에는 bash가 설치되어 있지 않으므로 ksh93을 사용해야 합니다. bash(또는 zsh)에서 이 명령을 실행하려고 하면 예상대로 작동합니다. 그러나 KSH에서는 "잘못된 소스 문자열"로 인해 실패합니다.
문자열을 재정렬하고 일부 문자를 제거하려고 시도했지만 성공하지 못했습니다. 출력은 다음과 같습니다
tr: A-Za-z0-9!#$%&()*+,-./:;<=>?@[\]^_`{|}~: invalid source string
이 문자열이 작동하도록 하려면 어떻게 ksh에 전달해야 합니까?
미리 감사드립니다
답변1
귀하의 의견에 감사드립니다 @glenn-jackman:
내가 삭제할 때
\
목록에서 다음과 같은 오류가 발생합니다.
invalid multibyte character byte
하지만 이를 방지하려면 LC_ALL을 설정해야 한다는 것을 이미 알고 있습니다. 이제 문자열을 탈출합니다. 이것피복재조각은
LC_ALL=C tr -dc 'A-Za-z0-9!#$%&()*+,\-./:;<=>?@[\\]^_`{|}~' < /dev/urandom | head -c16; echo;
감사해요