我已经尝试了过去2小时的所有工作,但我在shell和编程方面的经验有限。
我有一个循环
while IFS="," read var1 var2 var3 var4 var5 ; do
statements here...
done < $file
现在语句内部的操作是从一个包含5个字段的文本文件中读取,然后使用它们在Linux中使用bash创建帐户
useradd $var1 -p var2 -g var3
依此类推
我想让脚本只从第二行开始阅读,我不能让它工作。像ifs =,读(从第二行)var 1 var 2 var3等
原因是该文件是从excel到csv的导出数据库,因此第一行将包含诸如名字dob登记等标题,并且不需要
感谢您的帮助
增加:
在创建用户之前,我添加了一个if语句,如果用户满足条件,则会创建它们。
if [ "$var5" == "fullyenrolled" ]; then
continue with account creation...
echo "$var1 successfuly created"
else
echo "Sorry user $var1 is not fully enrolled"
fi
回声的输出类似于
Full name is not fully enrolled
user1 successfuly created
user2 successfuly created
即使我添加了sed 1d |虽然IFS =等等似乎它仍在阅读第一行,这就是为什么我得到第一个输出,如“全名未完全注册”
答案 0 :(得分:12)
使用sed“删除”传递给while循环的输入的第一行
sed 1d $file | while ...
do
your statements here
done
答案 1 :(得分:0)
使用awk
的解决方案:
awk 'NR >= 2 { print }' < "$file"