텍스트 파일에 빈 입력

텍스트 파일에 빈 입력

Linux 및 Oracle에서 사용자를 생성하는 스크립트가 있습니다. 여러 사용자를 생성할 때 다음 명령을 사용합니다.

      cat /path/path/file.txt | while read USER PASS ORAUSER ROLE 
       do

그러나 안타깝게도 해당 역할을 비워 두었고 이로 인해 사용자 액세스에 심각한 문제가 발생했습니다. 텍스트에 빈 변수가 있는지 확인하는 방법을 알고 싶습니다.

답변1

변수가 비어 있는지 확인하는 방법:

# bash
if [[ -z $var ]]; then
        echo var is empty
fi

# POSIX sh
if [ -z "$var" ]; then
        echo var is empty
fi
printf %s\\n "${var:-var is unset or null}"
: "${var:=default value for var}"

그래도 입력 파일에서 필드가 누락되거나 잘못 정렬되는 문제는 해결되지 않습니다. ORAUSER필드가 누락된 경우 ORAUSER변수에 필드 값이 할당됩니다 ROLE. 필드가 너무 많으면 마지막 변수가 ROLE모든 추가 필드를 가져옵니다. 빈 필드가 명확하게 구분되도록 공백이 아닌 구분 기호를 사용하도록 텍스트 파일 형식을 전환하는 것이 좋습니다. 예를 들어 /etc/passwd콜론( :)을 사용합니다.

아직 읽지 않으셨다면 읽어보시길 권합니다.배쉬 FAQ 1특히 쉘 스크립트에서 텍스트 파일을 한 줄씩/필드별로 올바르게 구문 분석하는 것에 대한 집단적 지혜 bash.

관련 정보