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. angularjs $http 服务

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...

  2. Import Example Dataset

    Overview The examples in this guide use the restaurants collection in the test database. The followi ...

  3. ckeidtor编辑器添加图片上传功能

    1.ckeditor默认没有上传图片功能,只能通过Url显示图片,图下图 2.首先说明,ckeditor是有上传功能的,只是隐藏了,需要通过配置让它显示 找到ckeditor/plugins/imag ...

  4. Tuple assignment

    It is often useful to swap the values of two variables. With conventional assignments, you have to u ...

  5. C#篇(二)——属性的实质

    属性的内部实现其实就是方法 我们平时写的代码: class Student { private int age; public int Age { get { return age; } set { ...

  6. Java类和对象4

    编写Java应用程序.首先,定义一个Print类,它有一个方法void output(intx),如果x的值是1,在控制台打印出大写的英文字母表:如果x的值是2,在控制台打印出小写的英文字母表.其次, ...

  7. SQL--去除字符串空格、截取字符串

  8. NodeJS学习笔记 (16)子进程-child_process(ok)

    原文: https://github.com/chyingp/nodejs-learning-guide/blob/master/README.md 自己的跟进学习: 父进程,子进程,线程之间的关系 ...

  9. iOS开发—— UIMenuController的使用

     UIMenuController的展现需要基于一个View视图,其交互则需要基于其所在View视图的Responder.举例来说,如果一个UIMenuController展现在当前ViewContr ...

  10. SPFA的小优化

    标签:闲扯 SPFA的小优化 1. 向队尾加入元素时,如果它比对首还优,就把把它直接和队首交换. 拿一个双端队列来实现 (手写 , head ,tail   STLdeque亲测及其慢) 这个小优化其 ...