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

Linux Shell脚本,用于从列表中添加具有密码的用户,linux,bash,unix,ubuntu-16.04,Linux,Bash,Unix,Ubuntu 16.04,我试图修改一个脚本,该脚本从文件中读取用户名/密码,如下所示: user1 pass1 user2 pass2 user3 pass3 我无法让脚本读取用户和pass之间的空格。 我可以用什么来划定这个空间? 这是我的代码: for row in `cat $1` do if [ $(id -u) -eq 0 ]; then username=${row%:*} password=${row#*:} #echo $username #ec

我试图修改一个脚本,该脚本从文件中读取用户名/密码,如下所示:

user1 pass1
user2 pass2
user3 pass3
我无法让脚本读取用户和pass之间的空格。 我可以用什么来划定这个空间? 这是我的代码:

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


      username=${row%:*}
      password=${row#*:}
      #echo $username
      #echo $password
我知道我必须更改${row%:}和${row%:}中的内容


我必须放什么才能让它看到user1 pass1之间的空格?

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

#/bin/bash
如果[“$EUID”-ne 0];然后
echo>&2“您不是root用户”
出口1
fi
同时读取-r用户名密码;做
#用户是否在此处添加内容
完成<“$1”

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

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

#/bin/bash
如果[“$EUID”-ne 0];然后
echo>&2“您不是root用户”
出口1
fi
同时读取-r用户名密码;做
#用户是否在此处添加内容
完成<“$1”

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

将它放在一个文件中,例如
myscript.sh
(别忘了在顶部添加一个shebang:
#!/bin/bash
)然后像这样运行
/myscript.sh passwords.txt
。让它读取文件。现在,我如何将这段代码添加到我的主脚本中,以便它可以创建用户?我编辑了问题中的主脚本。将它放在一个文件中,例如
myscript.sh
(不要忘记在顶部添加一个shebang:
#!/bin/bash
),然后像这样运行
/myscript.sh passwords.txt
。让它读取文件。现在,我如何将这段代码添加到我的主脚本中,以便它可以创建用户?我编辑了问题的主要脚本。
#!/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"