bash脚本中的命令变量

时间:2016-07-28 09:53:28

标签: bash

您好我想在我的服务器上自动设置用户。所以我从这个简单的bash开始

#! /bin/bash

if [ $# -ne 2 ]
then
 echo "Usage: $(basename $0) USERNAME PASSWORD"
 exit 1
fi
user_name=$1
password_var=$2

exec useradd -m $user_name
usermod -s /bin/bash
#echo "$2" | exec chpasswd $user_name --stdin
usermod -aG www-data "${user_name}"

我的最后一行有问题。我刚刚创建的用户未被分配到组www-data。当我只使用最后一行并注释其他内容并将我的一个用户提供给我能够添加自己的脚本时,有人可以解释一下为什么这样做了吗?

1 个答案:

答案 0 :(得分:1)

exec useradd -m $user_name

bash代替当前流程即useradd -m $user_name
此外,我在这里看不到使用exec的任何实际优势。

另外,由于Linux密码可以有空格,我建议

password_var="$2" #prevents word splitting

通过一些错误检查,我的最终脚本将是

password_var="$2"
useradd -mp "$password_var" "$user_name"  # You haven't used password 
if [ $? -ne 0 ] # checking the exit status of the last command
then
  echo "User creation failed"
  exit 1
else
usermod -s /bin/bash "$user_name"  #username missing in the original code
usermod -aG www-data "$user_name"
fi