如何在 shell 脚本 linux 上使用 case 语句



>im 尝试创建一个脚本来检查用户之前是否已经注册,而不是在用户名后添加数字,例如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"

当我运行此脚本时,它会保持generate new user.

https://tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_03.html

执行第一个匹配项的命令列表中命令。

https://www.gnu.org/software/bash/manual/bash.html#Conditional-Constructs

case将有选择地执行与 word 匹配的第一个模式对应的命令列表。

*始终匹配,因此始终执行。 如果您希望0事例在匹配时执行,请将其放在*事例之前。

最新更新