sh脚本猜数字游戏
#!/bin/bash
# 用户交互
read -p "请输入您的姓名: " name
read -p "请输入频道名称: " channel
echo "您好,$name, 欢迎来到$channel"
# 生成随机数
number=$(shuf -i 1-10 -n 1)
echo "我已经生成了一个1到10之间的随机数,来猜猜看吧!"
# 猜数字游戏
guess=0
while [[ $guess -ne $number ]]; do
read -p "请输入一个1-10之间的数字: " guess
if [[ $guess -eq $number ]]; then
echo "恭喜您猜对了!是否继续?(y/n):"
read choice
if [[ $choice = "y" ]] || [[ $choice = "Y" ]]; then
number=$((RANDOM % 10 + 1))
echo $number
continue
else
break
fi
elif [[ $guess -lt $number ]]; then
echo "小了,再试试看!"
else
echo "大了,再试试看!"
fi
done
#1. #!/bin/bash 执行shell脚本类型
#2. 输出语句
echo ‘输出’
#3. 变量格式: “变量名=变量的值”。当在脚本中引用变量时需要加上’$’符号或者“${变量}”
# 变量 var_name ;引用变量 $var_name
var_name="test.sh"
echo "test $var_name"
#4. 用户输入 表示in_name变量的值需要用户通过键盘输入得到
# 写法一:read -p 选项类似echo的作用
read -p "请输入您的名字:" in_name
echo "您输入的名称为:$in_name"
# 写法二:会存在换行输入
echo "请输入你的年龄:"
read in_age
echo "您输入的年龄是:$in_age"
#5.当前时间为变量
now_date=$(date "+%Y-%m-%d_%H:%M:%S")
echo "当前时间:$now_date"
#6.创建文件脚本
filename="$(date +%Y-%m-%d)"
echo "开始创建文件......"
touch ${filename}_file{01..09}.log
echo "创建成功"
echo "$(ls)
#7.以时间命名每隔2s创建1个文件
echo "开始创建文件......"
#touch ${filename}_file{01..09}.log
for i in `seq 1 5`;do
filename="$(date +%Y-%m-%d_%H:%M:%S)"
touch ${filename}_${i}_file.log
sleep 2
done
echo "创建成功;目录下文件如下:"
echo "$(ls)"
#8.计算 数学计算要用’[ ]’括起来并且外头要带一个’$’
# 暂停2s
sleep 2
# 变量
a=1
b=3
# 计算a、b之和
sum=$[$a+$b]
echo "sum is $sum"
if
#9.逻辑判断 if
# 不带else ((nums<20))是因为.sh中,用一个小括号或者不用都会报错
read -p "请输入数字:" nums
if ((nums<20));then
echo "输入不能小于20"
fi
# 带else
read -p "请输入数字:" nums
if ((nums<20));then
echo "输入不能小于20"
else
echo "恭喜"
fi
# 带elif ;这里的 && 表示“并且”的意思,当然你也可以使用 || 表示“或者”
read -p "请输入数字:" nums
if ((nums<20));then
echo "输入不能小于20"
elif ((nums>25))&&((nums<42));then
echo "25==42"
else
echo "恭喜"
fi
## 注意:if判断时 除了可以用”(( ))”的形式外,还可以使用”[ ]”。但是就不能使用>, < , = 这样的符号了,要使用 -lt (小于),-gt (大于),-le (小于等于),-ge (大于等于),-eq (等于),-ne (不等于)
read -p "请输入数字:" nums
if [ $nums -lt 20 ];then
echo "输入不能小于20"
elif [ $nums -gt 25 ] && [ $nums -lt 42 ];then
echo "25==42"
else
echo "恭喜"
fi
【注释:】 -lt (小于),-gt (大于),-le (小于等于),-ge (大于等于),-eq (等于),-ne (不等于)
for
# 脚本中的seq 1 5 表示从1到5的一个序列
for i in `seq 1 5`;do
echo $i
done