我正在尝试创建一个脚本,用于检查用户是否已经注册,然后在用户名后添加号码,username1
并且在我获得唯一用户名后将继续循环。
这是我尝试的
username="tes2"
password="tes2"
exists=$(grep -c "^$username:" /etc/passwd)
case=$exists
i=1
while true
do
case "$case" in
*)
echo 'generate new user'
i=$(( $i + 1 ))
username="$username""$i"
exists=$(grep -c "^$username:" /etc/passwd)
case=$exists;;
0)
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
useradd -m -p "$pass" "$username"
echo 'success add $username'
break;;
esac
done
echo "Quit"
Run Code Online (Sandbox Code Playgroud)
当我运行这个脚本时,它会保留generate new user
.
https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html
执行第一次匹配的 COMMAND-LIST 中的命令。
https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs
case
将有选择地执行与匹配单词的第一个模式对应的命令列表。
*
总是匹配所以它总是被执行。如果您希望0
案例在匹配时执行,请将其放在*
案例之前。