Linux Shell脚本,用于从列表中添加具有密码的用户

时间:2016-09-27 15:31:12

标签: linux bash unix ubuntu-16.04

我正在尝试修改一个从这样的文件中读取用户名/密码的脚本:

user1 pass1
user2 pass2
user3 pass3

我无法让脚本读取用户之间的空间并传递。 我可以用什么来划分这个空间? 这是我的代码:

for row in `cat $1`
do
  if [ $(id -u) -eq 0 ]; then


      username=${row%:*}
      password=${row#*:}
      #echo $username
      #echo $password

我知道我必须更改$ {row%:}和$ {row%:}

中的内容

我需要放置什么才能看到user1 pass1?

之间的空格

1 个答案:

答案 0 :(得分:2)

在读取每一行时分割两个字段会更容易。您可以使用read执行此操作。在这里使用while循环也更好(for循环需要与$IFS一起使用,它也会将整个文件加载到内存中):

#!/bin/bash
if [ "$EUID" -ne 0 ]; then
    echo >&2 "You are not root"
    exit 1
fi

while read -r username password; do
    # do the useradd stuff here
done < "$1"

请注意,我还将$(id -u)更改为$UID,因为它不会调用外部程序,因此应该更快。