我想添加一些此文件中的用户:
a b
c d
e f
firstname lastname始终
#!/bin/bash
Lines=$(cat newusers.txt | wc -l)
first=$(cat newusers.txt | awk '{print $1}')
last=$(cat newusers.txt | awk '{print $2}')
#test
echo $Lines;
echo $first;
echo $last;
until [ -z $1]; then
useradd - m -d /home/$1 -c "$1 + $2" $1
fi
在循环之前它工作正常但我无法添加换行符。
回显显示a c e
,第二个显示姓氏b d f
。
我尝试添加换行符,但它不起作用。
我可以用它做什么? 因为换行问题,我想我无法添加用户。
我还在stackoverflow上搜索了一种方法来检查/dev/null
用户是否已经存在,但我必须使用哪个变量?
答案 0 :(得分:1)
逐行处理文件更容易:
while read first last ; do
useradd -m -d /home/"$first" -c "$fist + $last" "$first"
done < newusers.txt
答案 1 :(得分:0)
我不明白你的代码意味着什么,但如果你想逐行阅读文件并获取不同字段的值,那么你可以使用以下代码片段:
#!/bin/bash
filename="newusers.txt"
while read -r line
do
fn=$( echo "$line" |cut -d" " -f1 )
ln=$( echo "$line" |cut -d" " -f2 )
echo "$fn $ln"
done < "$filename"
注意:您无法以您希望使用bash脚本的方式添加用户;由于系统会提示您输入必须使用tty
提供的密码,因此您可以使用expect
对其进行编程;或使用系统调用。