IF 推断

之前也写过简单的shell脚本,也不是转职运维。和系统相关的工作比較少。所以不怎么熟练。

近期因为系统总是出现各种乱七八糟的问题,也没有人来协助。仅仅好自己写shell脚本了,都是些基础的脚本。但因为shell的语法和通常的高级语言有些不一样,所以还是要系统的看下经常使用的部分。

if语句就是非常重要的一个。

这样的文章非常多,仅仅是拿来主义,假设有心得体会也会加上。小计下以后备查。 
基本结构:  if语句块须要使用if结束

if condition
then
statements
elif condition
then statements
else
statements
fi

tips:写法上须要注意的是
if后面的推断条件 方括号和之间的推断语句左右各要有一个空格(错了好几次了)

#####推断字符是否相等

#!/bin/bash
system=`uname -s` if [ $system = "Linux" ] #方括号内部两边有空格,等号两边也须要空格
then
echo "Linux"
else
echo "Other system"
fi

经常使用类型的推断写法(类比字符串)

1 字符串推断
str1 = str2      当两个串有同样内容、长度时为真
str1 != str2      当串str1和str2不等时为真
-n str1        当串的长度大于0时为真(串非空)
-z str1        当串的长度为0时为真(空串)
str1         当串str1为非空时为真 2 数字的推断
int1 -eq int2    两数相等为真
int1 -ne int2    两数不等为真
int1 -gt int2    int1大于int2为真
int1 -ge int2    int1大于等于int2为真
int1 -lt int2    int1小于int2为真
int1 -le int2    int1小于等于int2为真 3 文件的推断
-r file     用户可读为真
-w file     用户可写为真
-x file     用户可运行为真
-f file     文件为正规文件为真
-d file     文件为文件夹为真
-c file     文件为字符特殊文件为真
-b file     文件为块特殊文件为真
-s file     文件大小非0时为真
-t file     当文件描写叙述符(默觉得1)指定的设备为终端时为真 4 复杂逻辑推断
-a         与
-o       或
!       非

tips:
* -eq -ne -lt -nt仅仅能用于整数。不适用于字符串。字符串等于用赋值号=
* =放在别的地方是赋值,放在if [ ] 里就是字符串等于,shell里面没有==的,那是c语言的等于
* 整数条件表达式,大于,小于,shell里没有> 和< ,会被当作尖括号,仅仅有-ge,-gt,-le,lt

[參考文章](http://rfyiamcool.blog.51cto.com/1030776/738624)

本文出自 “orangleliu笔记本” 博客,请务必保留此出处 http://blog.csdn.net/orangleliu/article/details/38458889

【shell学习】经常使用条件推断-字符,数字,文件的更多相关文章

  1. SHELL学习笔记----IF条件判断,判断条件

    SHELL学习笔记----IF条件判断,判断条件 前言: 无论什么编程语言都离不开条件判断.SHELL也不例外.  if list then           do something here   ...

  2. shell 学习笔记8-case条件语句

    一.case语句简介 1.什么是case条件语句 case条件语句就相当于多分支的if/elif/else条件语句,但是比这样的语句更规范更好看,经常被用在失效系统服务启动脚本等企业应用中 程序将ca ...

  3. Shell 学习笔记之条件语句

    条件语句 if # if if condition then command fi # if else if condition then command else command fi # if e ...

  4. shell学习笔记之条件(二)

    test或者[ #检查文件是否存在 if test -f read.c then ... fi if [ -f read.c ] then ... fi #如果then和if在同一行上,就应该用;把i ...

  5. [Shell学习笔记] read命令从键盘或文件中获取标准输入(转载)

    转自:http://www.1987.name/151.html read命令是用于从终端或者文件中读取输入的内部命令,read命令读取整行输入,每行末尾的换行符不被读入.在read命令后面,如果没有 ...

  6. Shell学习(六)——条件判断总结

    Shell学习(六)--条件判断总结 [1]https://www.cnblogs.com/zhw-626/p/8528001.html [2]https://www.cnblogs.com/yizh ...

  7. Shell学习笔记 - 条件判断式

    1. 判断格式 1) test 参数 文件 例: test -e /root/install.log 2) [ 参数 文件 ]  -- 推荐使用 例: [ -e /root/install.log ] ...

  8. 【转】shell学习笔记(三)——引用变量、内部变量、条件测试、字符串比较、整数比较等

    1.env显示当前的环境变量 2.PS1='[\u@\h \w \A] \$' 可以设置bash的命令与提示符. 3.echo $$ 显示当前bash的PID号 4.echo $?显示上一条指令的回传 ...

  9. Shell学习之条件测试(四)

    Shell学习之条件测试 目录 逻辑测试 文件测试 数值比较 字符串比较 逻辑测试 格式: [ 表达式 ] 操作符 [ 表达式2 ] …… 命令1 操作符 命令2 …… 常用的操作符 ( 注意:-a和 ...

随机推荐

  1. Consolidate data by using multiple page fields

    Consolidate data by using multiple page fields https://support.office.com/en-us/article/Consolidate- ...

  2. poj 1094 / zoj 1060 Sorting It All Out

    Sorting It All Out Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 26876   Accepted: 92 ...

  3. POJ 3187 全排列+杨辉三角(组合数)

    思路: next_permutation()加个递推组合数随便搞搞就A了- //By SiriusRen #include <cstdio> #include <algorithm& ...

  4. Android 两步搞定Fragment的返回键

    Fragment可以说是在Android开发必需要使用到技术,项目中的界面基本上都是使用Fragment来实现,而Activity只是作为Fragment的载体,但有些特殊情况下Fragment也不得 ...

  5. E. Reachability from the Capital(tarjan+dfs)

    求联通分量个数,在dfs一次 #include <iostream> #include <algorithm> #include <cstring> #includ ...

  6. CentOS7.4-btrfs管理及使用

    btrfs, B-tree File System, GPL开源文件系统, 支持CoW即读时写入. 核心特性: 多物理卷支持; btrfs可由多个底层磁盘组成 支持RAID mkfs.btrfs 命令 ...

  7. NodeJS学习笔记 (15)二进制数据-buffer(ok)

    模块概览 Buffer是node的核心模块,开发者可以利用它来处理二进制数据,比如文件流的读写.网络请求数据的处理等. Buffer的API非常多,本文仅挑选 比较常用/容易理解 的API进行讲解,包 ...

  8. HTML5按键打开摄像头和拍照

    HTML5实现按键打开摄像头和拍照 步骤: 1.创建一个打开摄像头按钮的标签.video标签.拍照的按钮标签.画布 2.实现打开摄像头的功能 3.实现拍照功能   具体实现代码: <!DOCTY ...

  9. django 在非空的字段里插入现象表述

    1.char 类型设置为非空 对于字段不赋值 默认储存为''(空字符串) 2.int 类型设置为非空 对于字段不赋值 单条插入 报错        多条数据同时插入 默认设置为0

  10. python 进阶:修饰器的介绍

    参考链接:Python 函数装饰器 我认为python中的装饰器是一个很厉害的功能,他能瞬间提升代码的逼格,但对于我这样的小白来说,别说为所欲为的使用了,就连简单的尝试一下,却也是难于登天.经过长达半 ...