Shell脚本编程(二)

shell脚本编程中if、if else的使用以及一些常用到的操作符


if、if else使用方式:
     1) if条件
         if [ condition ];    #condition为判断条件,condition两边必须有空格,否则执行将报错
         then
                 commands;  #commands为执行语句
         fi
     2) else if和else
         if [ condition ]; 
         then
                commands;
         else if condition;then
                commands;
         else
                commands;
         fi

算数比较 
      对变量或值进行算数条件判断:
      条件通常被放置在封闭的中括号内,一定要注意两边的空格!!!
      [ $var -eq 0 ]    #当$var等于0时,返回真
      [ $var -ne 0 ]    #当$var不等于0时,返回真
      其他重要的操作符如下:
      -gt :  大于
      -lt :小于
      -ge : 大于或等于
      -le : 小于或等于
       可以按照下面的方法结合多个条件进行测试:
       [ $var1 -ne 0 -a $var2 -gt 2 ]   #使用逻辑与-a,即and
       [ $var1 -ne 0 -o $var2 -gt 2]    #使用逻辑或 -o,即or
 
文件系统相关测试
我们可以使用不同的条件标志测试不同的文件系统相关的属性

[ -f $file_var ]  :  如果给定的变量包含正常的文件路径或者文件名,则返回真
[ -x $var ]:如果给定的变量包含的文件可执行,则返回真
[ -d $var ] : 如果给定的变量包含的是目录,则返回真
[ -e $var ] : 如果给定的变量包含的文件存在,则返回真
[ -c $var ] : 如果给定的变量包含的是一个字符设备文件的路径,则返回真
[ -b $var ] : 如果给定的变量包含的是一个块设备文件的路径,则返回真
[ -w $var ] :如果给定的变量的文件可写,则返回真
[ -r $var ] : 如果给定的变量的文件可读,则返回真
[ -L $var ] : 如果给定的变量包含的是一个符号链接,则返回真
 
使用方法如下:
fpath="/etc/passwd"
if [ -e $fpath ];then
     echo File exists;         #意思也就是如果有passwd这个文件则打印File exists,否则打印Does not
else
     echo Does not;
fi
其他的自己可以实践下

字符串比较
使用字符串比较时,最好使用双中括号,因为有时候采用单括号会出错,最好避免。
[ [ $var1 > $var2  ] ]   #如果var1的字符序var2大,则返回真
[ [ $var1 < $var2  ] ]   #如果var1的字符序var2小,则返回真
[ [ $var1 == $var2  ] ]   #如果var1的字符序var2相等,则返回真
[ [ -z $var1 ] ]   #如果var1为空串,则返回真
[ [ -n $var1 ] ]   #如果var1为非空字符串,则返回真

实例:
     str1="Not empty"
     str2=""
     if [ [ -n $str1 ] ] && [ [-z $str2 ] ];
     then
            echo str1 is nonempty and str2 is empty string
     fi


     



      

Shell脚本编程(二)的更多相关文章

  1. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  2. Shell脚本编程总结及速查手册

    Shell是一种编程语言, 它像其它编程语言如: C, Java, Python等一样也有变量/函数/运算符/if语句/循环控制/… 但在开始之前, 我想先理清Shell语言与Shell之间的关系. ...

  3. Shell脚本编程具体解释

    第12章 Shell脚本编程   l  Shell命令行的执行 l  编写.改动权限和运行Shell程序的步骤 l  在Shell程序中使用參数和变量 l  表达式比較.循环结构语句和条件结构语句 l ...

  4. shell脚本编程基础

       最近学习了shell脚本编程,感觉自己的脚本写的不太好,所以想把shell脚本相关的知识系统的整理一下,便于以后的学习和使用. 一.shell脚本基础    shell脚本是利用shell的功能 ...

  5. SHELL脚本编程的常识和VI常用技巧

    来源:http://mprc.pku.edu.cn/mentors/training/TrainingCourses/material/ShellProgramming.HTM#_Toc3751808 ...

  6. 【Shell脚本编程系列】知识储备以及建立规范的脚本

    前言 学习shell脚本编程需要的知识储备: vi/vim编辑器命令 vimrc设置要熟练 基础命令,100多个要熟练 基础和常用的网络服务命令要会:nfs . rsync. inotify . la ...

  7. shell脚本编程及bash特性

    bash特性及bash脚本编程初步 终端,附着在终端的接口程序; GUI: KDE,GNome,Xfce CLI: /etc/shells bash的特性: 命令行展开: ~,{} 命令别名: ali ...

  8. 浅谈自底向上的Shell脚本编程及效率优化

    作者:沐星晨 出处:http://blog.csdn.net/sosodream/article/details/6276758 浅谈自底向上的Shell脚本编程及效率优化 小论文,大家多批评指导:) ...

  9. SHELL脚本编程-expect

    SHELL脚本编程-expect 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.expect概述 1>.expect介绍 expect 是由Don Libes基于Tcl( ...

  10. SHELL脚本编程-字符串处理

    SHELL脚本编程-字符串处理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字符串切片 [root@node101.yinzhengjie.org.cn ~]# echo { ...

随机推荐

  1. 点击事件触发count自增

    1.vue3合成API :(即为什么要用setup() :为了数据更加关联) vue3 引入setup()合成API语法,它可以将某数据关联的内容整合到一个部分,即使setup里的内容越来越多也会围绕 ...

  2. JavaScript 字符串的相关方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. git合入代码过程中问题记录

    问题一. 对远端仓库没有操作权限 ERROR: Repository not found. fatal: Could not read from remote repository. 定位思路 1.检 ...

  4. lc.59 螺旋矩阵 II

    题目描述 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix . 示例 输入:n = 3 输出:[[1,2,3],[8,9, ...

  5. 手写 ArrayList 核心源码

    手写 ArrayList 核心源码 手写 ArrayList 核心源码 ArrayList 是 Java 中常用的数据结构,不光有 ArrayList,还有 LinkedList,HashMap,Li ...

  6. var 和let const的区别

    var 是ES5语法,let,const是ES6语法,var存在变量提升. let const有块级作用域,var没有

  7. Docker下部署LNMP黄金架构

    一.部署lnmp 1.网络规划 172.16.10.0/24nginx:172.16.10.10mysql:172.16.10.20php:172.16.10.30网站访问主目录:/wwwrootng ...

  8. windows2003 DHCP服务器配置

    一.导入光驱 二.安装可选的windows组件 三.双击打开网路服务,安装DHCP/DNS服务器. 注:服务器地址要固定,因此安装时要规划好网络. 四.ip地址范围规划时要预留i出一些p地址.排除ip ...

  9. TCP 三次握手,给我长脸了噢

    大家好,我是小富~ 个人资源分享网站:FIRE 本文收录在 Springboot-Notebook 面试锦集 前言 之前有个小伙伴在技术交流群里咨询过一个问题,我当时还给提供了点排查思路,是个典型的八 ...

  10. Linux & 标准C语言学习 <DAY4>

    一.数据类型     为什么要对数据进行分类         1.现实中的数据就是自带类别属性的         2.对数据进行分类可以节约内存存储空间.提高运行速度     C语言中数据分为两大类别 ...