KSH에서는 소스 문자열이 유효하지 않지만 BASH에서는 유효하지 않습니다.

KSH에서는 소스 문자열이 유효하지 않지만 BASH에서는 유효하지 않습니다.

다음 명령을 사용하여 임의의 문자열을 생성하려고 합니다.

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;

감사해요

관련 정보