shell脚本输入一个十以内数字不对显示重新输入
时间: 2023-10-24 13:09:02 浏览: 90
可以用如下的脚本实现:
```
#!/bin/bash
echo "请输入一个十以内的数字:"
read num
while [[ ! $num =~ ^[0-9]$ ]]; do
echo "输入不合法,请重新输入:"
read num
done
echo "输入的数字为 $num"
```
在这个脚本中,首先输出提示信息让用户输入一个十以内的数字。然后使用 `read` 命令读取用户的输入,并使用正则表达式判断输入是否合法。如果输入不合法,则输出提示信息并继续循环读取,直到用户输入一个合法的数字。最后输出用户输入的数字。
这个脚本中的正则表达式 `^[0-9]$` 表示匹配一个只有一位数字的字符串,其中 `^` 和 `$` 表示字符串的开头和结尾,`[0-9]` 表示匹配一个数字。如果用户输入的字符串不满足这个正则表达式,则说明输入不合法。
相关问题
1. 编写一个Shell脚本,使用until循环打印从10倒数到1的数字。 2. 编写一个Shell脚本,使用until循环读取一个文件的内容,并输出每一行的内容。 3. 编写一个Shell脚本,使用until循环实现一个简单的倒计时器,每秒递减并输出当前倒计时。 4. 编写一个Shell脚本,使用until循环输出1000以内所有的水仙花数。 5. 编写一个Shell脚本,使用until循环读取用户输入的字符串,直到用户输入"exit"为止,并输出所有输入的字符串
1. 打印从10倒数到1的数字:
```bash
#!/bin/bash
num=10
until [ $num -lt 1 ]
do
echo $num
num=$[$num-1]
done
```
2. 读取一个文件的内容,并输出每一行的内容:
```bash
#!/bin/bash
until [ -z "$1" ]
do
while read line
do
echo $line
done < $1
shift
done
```
3. 实现一个简单的倒计时器,每秒递减并输出当前倒计时:
```bash
#!/bin/bash
seconds=10
until [ $seconds -lt 1 ]
do
echo $seconds
sleep 1
seconds=$[$seconds-1]
done
echo "倒计时结束!"
```
4. 输出1000以内所有的水仙花数:
```bash
#!/bin/bash
n=1
until [ $n -gt 1000 ]
do
sum=0
temp=$n
while [ $temp -gt 0 ]
do
r=$[$temp%10]
sum=$[$sum+$r*$r*$r]
temp=$[$temp/10]
done
if [ $sum -eq $n ]; then
echo $n
fi
n=$[$n+1]
done
```
5. 读取用户输入的字符串,直到用户输入"exit"为止,并输出所有输入的字符串:
```bash
#!/bin/bash
input=""
until [ "$input" = "exit" ]
do
read -p "请输入字符串(输入exit退出):" input
if [ "$input" != "exit" ]; then
echo $input
fi
done
```
完成一个shell脚本内容的编写,猜数字游戏 描述:生成一个 100以内的随机数,提示用户猜数字,根据用户的输入,给出相应的提示,“猜大了”或者“猜小了”。
可以尝试下面的shell脚本:
```bash
#!/bin/bash
number=$((RANDOM % 100 + 1)) # 生成一个1到100的随机数
echo "我想了一个1到100的数字,你猜猜是几?"
while true; do
read guess
if [[ $guess -eq $number ]]; then
echo "恭喜你,猜对了!"
break
elif [[ $guess -lt $number ]]; then
echo "猜小了,再试一次吧!"
else
echo "猜大了,再试一次吧!"
fi
done
```
脚本的基本思路是:先生成一个1到100的随机数,然后不断询问用户输入的数字,根据比较结果给出相应的提示,直到用户猜对为止。
阅读全文