sh脚本猜数字游戏

101 阅读1分钟

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