首页 > 系统相关 >Shell中的if与case选择结构语法格式

Shell中的if与case选择结构语法格式

时间:2023-11-10 12:33:06浏览次数:27  
标签:case opt Shell echo 语法 bash root localhost

1 if单分支

语法构成:

  1. if 条件测试;then
  2. 命令序列
  3. fi
[root@localhost opt]# vim test02.sh
#!/bin/bash
if [ $UID -eq 0 ];then	
  echo "我是管理员"
  echo ok
fi

[root@localhost opt]# bash test02.sh
我是管理员
ok
2 if双分支

语法构成:

  1. if 条件测试;then
  2. 命令序列1
  3. else
  4. 命令序列2
  5. fi
[root@localhost opt]# vim test02.sh
#!/bin/bash
if [ $UID -eq 0 ];then
    echo "我是管理员"
    echo ok
else
    echo "不是管理员"
    echo no
fi

[root@localhost opt]# su - zhangsan		#换用户进行测试
[zhangsan@localhost ~]$ cd /opt/
[zhangsan@localhost opt]$ bash test02.sh
不是管理员
no
[zhangsan@localhost opt]$ exit
注销
[root@localhost opt]#
3 if多分支

语法构成:

  1. if 条件测试1 ;then
  2. 命令序列1
  3. elif 条件测试2 ;then
  4. 命令序列2
  5. else
  6. 命令序列n
  7. fi

编写脚本,输入参数判断成绩;

成绩大于等于90-小于100为优秀,

成绩大于等于80-小于89为良好;

成绩大于等于60-小于79为合格;

成绩小于60为不合格。

如果输入其他数字则提示输入不规范,请输入0-100之间的数

[root@localhost opt]# vim count.sh
#!/bin/bash
read -p "请输入你的月考成绩:" a
if [ $a -gt 100 ] || [ $a -lt 0 ];then
    echo 请输入0-100的数字!!!
elif [ $a -ge 90 ];then
    echo 优秀
elif [ $a -ge 80 ];then
    echo 良好
elif [ $a -ge 60 ];then
    echo 及格
else
    echo 不及格
fi
4 case 单条判断
  1. case $变量名称 in
  2. 模式1)
  3. 命令序列1
  4. ;;
  5. 模式2)
  6. 命令序列2
  7. ;;
  8. 模式n)
  9. 命令序列n
  10. ;;
  11. *)
  12. 如果上面都不满足,则运行这条命令
  13. esac
#创建脚本,启动时输入参数与文件名可以文件
[root@localhost opt]# vim case01.sh
#!/bin/bash
case $1 in
    t)						#如果$1是t就执行touch任务
        touch $2;;			#有分号结尾
    m)						#如果$1是m就执行mkdir任务
        mkdir $2;;
    r)						#如果$1是r就执行rm -rf任务
        rm -rf $2;;
    *)
        echo "请输入t、m、r和参数"
esac

[root@localhost opt]# bash case01.sh	#要输入指定参数与文件名	
请输入t、m、r参数与文件名
[root@localhost opt]# bash case01.sh t case.txt
[root@localhost opt]# ls
case.txt
5 case 多条判断
  1. case $变量名称 in
  2. 模式1|模式2)
  3. 命令序列1
  4. ;;
  5. 模式3|模式4)
  6. 命令序列2
  7. ;;
  8. 模式n|模式m)
  9. 命令序列n
  10. ;;
  11. *)
  12. esac
[root@localhost opt]# vim case01.sh
#!/bin/bash
case $1 in
    t|tc)			#如果$1是t或者tc就执行touch任务
        touch $2;;
    m|mk)			#如果$1是m或者mk就执行mkdir任务
        mkdir $2;;
    r|rm)			#如果$1是r或者rm就执行rm -rf任务
        rm -rf $2;;
    *)
        echo "请输入t、m、r和参数"
esac

[root@localhost opt]# bash case01.sh
请输入t、m、r参数与文件名
[root@localhost opt]# bash case01.sh t case.txt
[root@localhost opt]# ls
case.txt

标签:case,opt,Shell,echo,语法,bash,root,localhost
From: https://blog.51cto.com/u_16315529/8295738

相关文章

  • shell 命令的一些基本用法
    0背景在使用shell的时候,总是有些不习惯,记录一下常用的用法吧。一、符号1.1引号 Shell中有三种引号,分别为双引号("")、单引号('')以及反引号(``)含义:双引号(""):在双引号中,除了$,'',`和\以外所有的字符都解释成字符本身。单引号(''):在单引号中所有的字符包括特殊字符($,'',......
  • windows10 使用Xshell时出现丢失msvcr110.dll
    Xshell启动报错如下:无法启动此程序,因为计算机中丢失MSVCR110.dll。尝试重新安装该程序以解决此问题。解决步骤如下:(亲测有效)1.进入网址:https://www.microsoft.com/zh-CN/download/details.aspx?id=30679点击下载; 2.下载以下两个程序包; 3.下载完成后依次安装 安装后......
  • 【汇编】汇编语言语法
    GNU汇编语法在进行嵌入式Linux开发的时候是绝对要掌握基本的ARM汇编,因为Cortex-A芯片一上电SP指针还没初始化,C环境还没准备好,所以肯定不能运行C代码,必须先用汇编语言设置好C环境,比如初始化DDR、设置SP指针等等,当汇编把C环境设置好了以后才可以运行C代码。所......
  • 用原型实现Class的各项语法
    本人之前对Class一直不够重视。平时对原型的使用,也仅限于在构造函数的prototype上挂属性。原型尚且用不着,更何况你Class只是原型的一颗语法糖?直到公司开始了一个webgis项目,使用openlayers。看了下openlayers的代码,整个api都是用Class构建的。我才意识到,对Class的使用已经很普遍了......
  • shell
    接上一部分#数字  -eq(equal)等于  -ne(notequal)不等于  -ge(Greaterthanorequalto)大于等于   -le(Lessthanorequalto)小于等于   -gt(greaterthan)大于  -lt(lessthan)小于 #文件test  -f存在且是正规文件   -......
  • The art of shellcode
    目录1-如何编写shellcode1-1纯手搓1-1-1纯汇编1-1-2内联汇编1-1-3使用tiny_libc1-2借助工具1-2-1pwntools的shellcraft1-2-2alpha31-2-3AE641-2-4shellcodeencoder1-2-5msf生成1-3在线网站2-突破沙箱规则2-1使用at/v/2系统调用2-2使用orw读取flag2-3切换指令模式2-......
  • C#语法中一个问号(?)和两个问号(??)的运算符
    (1)、C#语法中一个个问号(?)的运算符是指:可以为null的类型。 (2)、C#语法中两个问号(??)的运算符是指null合并运算符,合并运算符为类型转换定义了一个预设值,以防可空类型的值为Null。           ?? 运算符称为null合并运算符,用于定义可以为null值的类型和引用类......
  • Markdown语法
    Markdown标题语法(#)号数量表示标题的等级,例:#一级标题##二级标题强调语法通过将文本设置为粗体或斜体来强调其重要性。粗体要加粗文本,请在单词或短语的前后各添加两个星号(asterisks)或下划线(underscores)。如需加粗一个单词或短语的中间部分用以表示强调的话,请在要加粗部......
  • Xshell通过SSH连接阿里云报错“服务器发送了一个意外的数据包” xshell连接ubuntu
     ubuntu连接旧版本就会显示报错1.登录到阿里云服务器上 2.解决方法命令: vim/etc/ssh/sshd_config加到最后一行打开sshd_config并且将下面的复制进去保存,然后重启reboot即可。[email protected],ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh......
  • 通过 MySQL Shell 8.2.0 工具进行数据复制/迁移
    一、通过sysbench创造测试数据1、创造测试数据[root@hankyoondb_tools]#sysbench--mysql-user=root--mysql-password='xxxxxx'--mysql-socket=/data/mysql/3307/mysql.sock/usr/share/sysbench/oltp_common.lua--tables=10--table_size=1000000preparesysbench1.0.1......