编写一个Shell scripts,要求根据屏幕提示输入用户名和密码,如果用户名和密码正确(用户名是Linux,密码是123456)则在屏幕上打印“欢迎您,Linux先生/女士”。否则显示“用户名或密码错误!”后退出。限制输入次数为三次
时间: 2024-05-10 21:16:56 浏览: 60
以下是符合要求的Shell脚本:
```shell
#!/bin/bash
count=0
while [ $count -lt 3 ]
do
read -p "请输入用户名:" username
read -s -p "请输入密码:" password
echo
if [ "$username" = "Linux" ] && [ "$password" = "123456" ]
then
echo "欢迎您,Linux先生/女士"
exit 0
else
echo "用户名或密码错误!"
count=$((count+1))
fi
done
echo "输入次数超过限制,程序退出。"
exit 1
```
脚本中使用了while循环,每次循环提示用户输入用户名和密码,并通过if语句判断输入是否正确。如果输入正确,则输出欢迎信息并退出程序;如果输入错误,则输出错误信息,并将计数器加1。当计数器超过3时,输出错误信息并退出程序。
相关问题
编写一个Shell scripts,要求根据屏幕提示输入用户名和密码,如果用户名和密码正确(用户名和密码以文件的形式保存在当前目录下,每行为一个用户的用户名和密码,格式如下图所示)。则在屏幕上打印“欢迎您,XXX先生/女士”。否则显示“用户名或密码错误!”后退出。 Linux为用户名,123456为密码,中间是空格。
可以使用以下Shell脚本实现:
```shell
#!/bin/bash
# 读取用户名和密码
read -p "请输入用户名: " username
read -s -p "请输入密码: " password
echo ""
# 验证用户名和密码
if grep -q "^$username $password$" users.txt; then
echo "欢迎您,$username 先生/女士"
else
echo "用户名或密码错误!"
exit 1
fi
```
其中,`read` 命令用于从标准输入读取用户输入,`-p` 参数用于提示用户输入内容,`-s` 参数用于隐藏密码输入,最后使用 `echo` 命令输出一个换行符。
`grep` 命令用于在 `users.txt` 文件中查找匹配的用户名和密码,如果找到则返回0,即真,否则返回1,即假。`-q` 参数用于禁止输出匹配的行,只返回匹配结果。匹配字符串使用正则表达式,`^` 表示行首,`$` 表示行尾,中间加上空格分隔用户名和密码。
如果用户名和密码正确,则输出欢迎信息,否则输出错误信息并退出。
阅读全文