我有一个在 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
特别是。