我有一个脚本bash来从.txt文件添加用户.这很简单:
name firstname uid gid
Run Code Online (Sandbox Code Playgroud)
空间分隔值
我想用awk检查每行是否包含4个字段.如果是,我想返回1,如果不返回0.
file=/my/file.txt
awk=$(awk -F' ' '{(NF != 4) ? res = 0 : res = 1; print res)}' $file)
echo $awk
Run Code Online (Sandbox Code Playgroud)
现在,awk每行返回1,但我希望它在结尾返回1或0,而不是文件中的每一行.
在UNIX上0,如果成功并且!=0出现错误,您将返回.对我来说,0当所有记录都有4字段并且1并非所有记录都有4个字段时返回更有意义.
要实现这一目标,请使用exit:
awk 'NF!=4{exit 1}' file
Run Code Online (Sandbox Code Playgroud)
仅供参考:默认情况下awk将退出0.
如果要在shell条件中使用它:
#!/bin/bash
if ! awk 'NF!=4{exit 1}' file ; then
echo "file is invalid"
fi
Run Code Online (Sandbox Code Playgroud)
PS:-F' '在你的例子中是多余的,因为' '它是默认的字段分隔符.