Linux学习总结(五十八)shell脚本2-逻辑判断if

1 三种基本if语句

格式1:if 条件 ; then 语句; fi

#!/bin/bash
a=5
if [ $a -gt 2 ];
then echo $a
fi 

执行结果为 5
格式2:if 条件; then 语句; else 语句; fi

#!/bin/bash
a=5
if [ $a -gt 10 ];then
echo $a
else
echo 0
fi

执行结果为 0
格式3:if …; then … ;elif …; then …; else …; fi

#!/bin/bash
a=8
if [ $a -lt 2 ];then
    echo $a
elif [ $a -gt 10 ];then
    echo 10
else
    echo 0
fi

执行结果为0
备注:if逻辑判断,自上而下满足条件执行相应操作后立刻结束。不满足则继续往下判断,直到满足条件为止。
逻辑判断表达式:if [ $a -gt $b ]; if [ $a -lt 5 ]; if [ $b -eq 10 ]等 -gt (>); -lt(<); -ge(>=); -le(<=);-eq(==); -ne(!=) 注意到处都是空格
可以使用 && || 结合多个条件
if [ $a -gt 5 ] && [ $a -lt 10 ]; then
if [ $b -gt 5 ] || [ $b -lt 3 ]; then

二 if 判断文件、目录属性

[ -f file ]判断是否是普通文件,且存在
[ -d file ] 判断是否是目录,且存在
[ -e file ] 判断文件或目录是否存在
[ -r file ] 判断文件是否可读
[ -w file ] 判断文件是否可写
[ -x file ] 判断文件是否可执行
几种特殊的判断
if [ -z "$a" ] 这个表示当变量a的值为空时会怎么样
if [ -n "$a" ] 表示当变量a的值不为空
if grep -q ‘123‘ 1.txt; then 表示如果1.txt中含有‘123‘的行时会怎么样
if [ ! -e file ]; then 表示文件不存在时会怎么样
if (($a<1)); then …等同于 if [ $a -lt 1 ]; then…
[ ] 中不能使用<,>,==,!=,>=,<=这样的符号

三 shell 中的case 判断

格式 case 变量名 in
value1)
command
;;
value2)
command
;;
*)
commond
;;
esac
在case程序中,可以在条件中使用|,表示或的意思, 比如 2|3) command ;;
举例

#!/bin/bash
read -p "Please input a number: " n
case $n in
1)
    ls /root/
;;
2)
    fdisk -l
;;
3)
   ifconfig
;;
esac

以上脚本运行后就可以输入1或2或3执行相应的命令。

原文地址:http://blog.51cto.com/12606610/2125318

时间: 2024-10-31 10:37:06

Linux学习总结(五十八)shell脚本2-逻辑判断if的相关文章

linux学习笔记--工程师技术:shell脚本基础

 Shell脚本 脚本:可以执行文件,运行后可以实现某种功能(命令的堆积,非交互) 规范Shell脚本的一般组成 #! 环境声明(Sha-Bang) # 注释文本 可执行代码 #!/bin/bash   #环境声明,声明写的脚本是bash这个程序翻译的 一.书写第一脚本程序 [[email protected] ~]# vim /root/1.sh #!/bin/bash echo hello world hostname cat  /etc/redhat-release ifconfig |

linux学习笔记-第十八课-LAMP之环境搭建(一)

一.LAMP搭建前的准备 LAMP是四套软件的缩写,分别指的是L-Linux,A-Apache,M-Mysql,P-php,利用这四套软件搭建的web的运行环境. 搭建前需要需要下载好软件 apache http://syslab.comsenz.com/downloads/linux/httpd-2.2.16.tar.gz mysql  32位 :http://syslab.comsenz.com/downloads/linux/mysql-5.1.40-linux-i686-icc-glib

Linux学习笔记(十八) vim(二)、编辑模式、vim实践练习

一. 编辑模式 命令行模式替换时如果需要替换的字符中有/符号,那么可以将分隔符换成#或者@ :1,100s#/good/weer/#well#g 将前一百行中的/good/weer/替换为well,:nohl 取消搜索时的高亮显示,:x也是保存并退出,但是如果并未改动文件内容,:wq会修改mtimex不会修改mtime vim练习 cp /etc/dnsmasq.conf /tmp/1.txt (1) 分别向下.向右.向左.向上移动6个字符(6j 6l 6h 6k).(2) 分别向下.向上翻两页

JAVA学习第五十八- GUI

GUI Graghical User Interface(图形用户接口) java为GUI提供的对象都存在java.awt和java.swing包中 Java的GUI做的的确干不过C++等,不打算浪费过多的时间在这上面 一个简单的窗体演示 public static void main(String[] args){ Frame f = new Frame("新窗体"); f.setLocation(400, 200);//设置窗体的位置 f.setSize(500, 400);//设

linux学习笔记-第二十八课-MySQL主从复制,读写分离配置

MySQL主从配置 配置准备将要配置的数据库进行主从同步,主从的服务器上都要有同一个数据库 一.配置mysql主服务器 [[email protected] ~]# vim /etc/my.cnf .................................... log-bin=mysql-bin     <== 打开日志格式 .................................... server-id=1           <== 主从标记 ............

JAVA学习笔记(五十八)- InetAddress类与URL

InetAddress类 /* * InetAddress类   */ public class Test07 {    public static void main(String[] args) throws UnknownHostException {        //获取本机的InetAddress实例          System.out.println("*******获取本机... www.songtaste.com/user/10258631/infowww.songtast

Linux学习(二十八)iptables (二) iptables规则语法

查看iptables规则: [[email protected]0002 ~]# iptables -nvL Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 1786 140K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT icmp -- *

Linux学习总结(十八)几个简单的文本处理工具cut sort tr split

1 命令cut 用来截取某一个字段格式 : cut -d '分隔符' [-cf] n, n为数字,表示第几段-d:后面跟分隔符,分割符要加单引号-c:后面接的是第几个字符-f:后面接的是第几段那么意思是-c,-f选项二选一例如: head -3 /etc/passwd |cut -d ':' -f 1例如 head -3 /etc/passwd |cut -c 1-c也可以是一个区间例如 head -3 /etc/passwd |cut -c1-3-c 也可以单独指定好几个位置的字符例如 hea

Linux学习第五节课-标准I/O和管道

Linux学习第五节课 ------------------------------------------------------------------------------------------------------------------------------------------------------------------ 三十一.标准输入和输出 程序:指令+数据 读入数据:Input 输出数据:Output 打开的文件都有一个fd: file descriptor (文

BeagleBone Black板第五课:Shell脚本编程实验

BBB板第五课:Shell脚本编程实验 在一上课我们通过简单的echo命令测试并控制GPIO端口的高低电平输出,实现对一个LED指示灯的点亮和关闭控制,本节将通过Shell脚本编程,来完成两个LED指示灯的交替闪亮的实验. 实验器材:准备两个二极管指示灯,面包板等 使用GPIO端口P8.12和P8.11两个引脚 我们暂时不借助其他工具软件,直接远程登陆到BBB板的图形桌面,使用内置的Ledfpad编辑器来完成Shell脚本的编程. 远程登陆BBB板图形桌面还记得吧,不记得话参考前面的课程,这里就