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
.