[root@linux-server script]# vim user.sh
#!/usr/bin/bash
read -p “请设置用户名/数量/密码: " prefix num pass
cat <<-EOF
用户前缀:prefix用户数量:prefix
用户数量:prefix用户数量:num
用户密码:$pass
EOF
for i in $(seq 1 num)douser=num)
do
user=num)douser=prefix$i
id $user &> /dev/null
if [ ?−eq0];thenecho"? -eq 0 ];then
echo "?−eq0];thenecho"user is already exist!”
exit 0
else
useradd $user &> /dev/null
echo $pass | passwd --stdin $user &>/dev/null
fi
done
echo “starting create users…”
[root@linux-server script]# chmod +x user.sh
[root@linux-server script]# ./user.sh
参数详解:
seq 打印序列号,只跟数字
seq 命令用于产生从某个数到另外一个数之间的所有整数。
seq命令的原理就不说了,这里说说为什么不能在{ }中使用变量。其实原因写在bash的man手册中:
大意是说,Bash中会最先展开{ }中的内容,这个时候KaTeX parse error: Expected '}', got 'EOF' at end of input: …是i在循环中读取的是‘{1..NUM}’的一个完整的字符串,输出时$NUM会被10替代,就有了’{1…10}'这样的结果。
该bash脚本用于在Linux环境中接收用户输入的前缀、数量和密码,然后创建相应数量的用户。它利用seq命令生成序列号,但注意在循环中直接使用变量可能导致未预期的结果。如果用户已存在,脚本将提示并退出。

2566

被折叠的 条评论
为什么被折叠?



