【shell一天一练】case语句、read命令

95 阅读1分钟

今日小练题目📢

写一个脚本实现如下功能: 输入一个数字,然后运行对应的一个命令。 显示命令如下: cmd meau* 1—date 2–ls 3–who 4–pwd 当输入1时,会运行date, 输入2时运行ls, 依此类推。

优秀作业🤌🏻

#!/bin/bash
#author:xYLiuuuuuu
#date:2024-11-24

echo "*cmd meau** 1-date 2-ls 3-who 4-pwd"

while :
do
        read -p "please input a number 1-4: " n
        case $n in
                1)
                        date
                        break
                        ;;
                2)
                        ls
                        break
                        ;;
                3)
                        who
                        break
                        ;;
                4)
                        pwd
                        break
                        ;;
                *)
                        echo "Wrong input, try again!"
                        ;;
        esac
done

敲黑板📝

  • read命令
-p 指定一个提示
-t 指定等待输入的秒数,当计时满时,read命令返回一个非零退出状态

if read -t 5 -p "输入网站名:" website
then
    echo "你输入的网站名是 $website"
else
    echo "\n抱歉,你输入超时了。"
fi

-n 设置read命令计数输入的字符,当输入字符数达到预定数目时,自动退出,并将输入的数据赋给变量

-s 使read命令中输入的数据不显示在命令终端上

# cat 命令的输出作为read命令的输入,read读到>的值放在line中
cat test.txt | while read line      
  • case ... esac 这种逻辑判断用法,非常适合做选择题,尤其是选项很多时,选项也可以有多个值,比如1|5)
  • 如果想要反复和用户交互,必须使用while循环,并借助break或者continue来控制流程循环
  • break表示退出循环体,continue表示结束本次循环,进入下一次循环
  • while和冒号之间要有分隔!!!