闰年判断。编写一个shell脚本,提示输入一个4位数,检查输入合法性,对合法的4位数判断该年是否为闰年,并输出判决结果。
时间: 2024-03-23 15:43:50 浏览: 13
以下是一个简单的 shell 脚本,实现输入一个 4 位数并判断是否为闰年:
```shell
#!/bin/bash
# 提示用户输入一个 4 位数
echo "请输入一个 4 位数:"
read year
# 判断输入是否为 4 位数
if [[ ! $year =~ ^[0-9]{4}$ ]]; then
echo "输入不合法,请输入一个 4 位数!"
exit 1
fi
# 判断是否为闰年
if (( $year % 4 == 0 && $year % 100 != 0 || $year % 400 == 0 )); then
echo "$year 是闰年!"
else
echo "$year 不是闰年!"
fi
```
脚本的实现思路很简单,首先使用 `read` 命令获取用户输入的 4 位数,然后使用正则表达式判断输入是否合法,如果不合法则输出错误信息并退出脚本。如果输入合法,则使用闰年的计算公式判断该年是否为闰年,并输出判决结果。
相关问题
4. 编写一个Shell脚本,使用until循环输出1000以内所有的水仙花数。
以下是一个使用until循环输出1000以内所有的水仙花数的Shell脚本:
```shell
#!/bin/bash
n=1
until ((n>999)); do
sum=0
i=$n
while ((i>0)); do
digit=$((i%10))
sum=$((sum+digit*digit*digit))
i=$((i/10))
done
if ((n==sum)); then
echo $n
fi
n=$((n+1))
done
```
解释一下代码:
1. 在开始Shell脚本之前,我们使用`#!/bin/bash`来指定脚本使用的shell。
2. 我们使用`n`来表示当前数字,初始值为1,每次循环加1,直到1000。
3. 在循环的每个迭代中,我们使用`sum`来表示当前数字的各个位数的立方和,初始值为0。
4. 我们使用`i`来表示当前要计算的位数,初始值为当前数字`n`。
5. 我们使用一个内部的while循环来计算当前数字的各个位数的立方和。
6. 在while循环中,我们使用`digit`来表示当前位数的值,计算方法是将`i`除以10取余数。
7. 我们将`digit`的立方加到`sum`中,然后将`i`除以10,以计算下一个位数。
8. 当while循环结束时,如果当前数字等于`sum`,则说明它是一个水仙花数,我们将其输出。
9. 最后,我们将`n`加1,开始下一个循环迭代,直到`n`大于999时退出循环。
希望这可以帮助你!
编写一个Shell脚本,使用until循环输出1000以内所有的水仙花数。
好的,以下是一个Shell脚本,可以输出1000以内所有的水仙花数:
```bash
#!/bin/bash
echo "1000以内所有的水仙花数为:"
num=0
until [ $num -eq 1000 ]
do
i=$((num/100)) # 百位数
j=$(((num/10)%10)) # 十位数
k=$((num%10)) # 个位数
if [ $((i*i*i+j*j*j+k*k*k)) -eq $num ]
then
echo $num
fi
num=$((num+1))
done
```
在这个脚本中,我们使用 `until` 循环迭代变量 `num`,从0到999。在每个迭代中,我们将 `num` 拆分成百位数、十位数和个位数,并计算它们的立方和。如果这个立方和等于 `num`,那么 `num` 就是一个水仙花数,我们将其输出即可。
你可以将以上脚本保存为一个 `.sh` 文件,并使用 `chmod +x` 命令赋予执行权限,然后执行该文件即可输出1000以内所有的水仙花数。