文本文件中的空输入

文本文件中的空输入

我有一个在 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使用冒号 ( :)。

如果您还没有,我还建议您阅读Bash常见问题解答1有关在 shell 脚本中正确逐行/逐字段解析文本文件的集体智慧,bash特别是。

相关内容