bash基础编程

前言:条件测试语法有两种书写模式,一种时[expression] ,另外一种是[[exprssion]] ,为了在书写条件测试的过程中,不让大家将两种格式互相混淆,那么在这里只讲一种格式,也就是第一种格式[]。因为第一种格式在书写过程中基本不会出错,而第二种格式经常会写错,且第一种格式在很多服务的启动脚本中经常看到,因此应用广。              有兴趣可以看看《shell脚本编辑大全》

条件测试的状态返回i值和书写格式

执行命令,利用状态返回值来判断

0  :成功

1-255:失败

测试表达式

test expaession

[ expression ]   常用

[[ expression ]]

bash的测试类型

数值测试

字符串测试

文件测试

数值测试:数值比较

-eq : 是否等于  [$numl  -eq   $num2]   ===euqual

-ne : 是否不等于[$numl -ne $num2]  ==== no  euqual

-gt :  是否大于 [$numl  -gt  $numl2]====greater

-ge : 是否大于等于[$numl -ge  $numl2] ===greater  euqual

-lt : 是否小于  [$numl1  -lt   $numl2]====less than

-le  : 是否小于等于 [$numl1  -le  $numl2]

字符串测试:字符比较

== :是否等于

>  : 是否大于

<   :  是否小于

!= :是否不等于

=~左侧字符串是否能够被右侧的pattern所在区配

-z "string"  :   判断指定的字符串是否为空,空则为真,不空则为假

-n  "string" :   判断指定的字符串是否为不空,不空则为真,空为假

注意:

(1) 字符串要加引号

(2) 在做字符串的比较时候,格式如下:

if [" $VARIABLE" = = "$SVARIABLE"  -a   "$SVARIBLE" = = "CPU" ] ;then 需要在运算符号两边有空格,并且使用双引号将字符串包裹起来,这样即使是变量也可以替换。

文件测试

存在性测试

-a file

-e file

文件的存在性测试,存在为真,不存在文假

文件类型测试

-b  file  :是否存在并且为块设备文件

-c  file  :是否存在并且为字符设备文件

-d   file  :是否存在并且为目录文件

-f   file  :是否存在并且为普通文件

-h/l  file  :是否存在并且为符号链接文件

-p  file  :是否存在并且为为管道文件

-s   file :是否存在并且为套接字文件

文件权限测试

-r file   :是否存在并且为当前用户可读

-w  file :是否存在并且为当前用户可写

-x   file  : 是否存在并且为当前用户可执行

特殊权限测试

-u   file  :是否存在并且为拥有SUID 权限

-g  file :  是否存在并且为拥有GUID权限

-k  file  : 是否存在并且为拥有Stiicky权限

文件是否有内容

-s   file   :  是否存在并且有内容

文件是否为空,为空则为真

-z  $VARIALE

文间的时间差测试

-N file : 文件自从上此被读取后是否被修改过

 

从属关系测试

-O file :当前用户是否为文件的属主

-G file : 当前用户是否属于文件的属组

双目测试

file -ef file2 :是否为同一件文件系统上的指向同一iNode的硬链接

file -nt flie2:file1  是否新于file2

file  -ot file2:file1  是否旧于file2

组合条件测试

逻辑运算

第一种方式

COMMAND1 $$ COMMAND2

COMMAND1 || COMMAND2

! COMMAND

[-O file ]  & & [-r file]

第二种方式

[expression  -a  expression]  : 与运算

[expession  -O   expression]  :  或运算

!  expression

例如: [- O file -a -x file ]

脚本的状态返回值

1 默认是脚本执行的最后一条命令的返回值

2 自定义状态退出状态码

exit  [n] : n为自己指定的状态码

注意:shell 进程遇到exit时候,会立即终止,

整个脚本执行结束

向脚本传递参数

位置参数变量

在脚本文件中的引用方式:

$1 , $2........表示给脚本传递的第一个参数和第二个位置参数

到了两位数的时候用${10},${11} 因为$11会产生歧义。

轮替  shift  [n]  :位置参数轮替

特殊变量

$o :脚本文件路径名称本身

$# :保存了脚本参数的个数

$* :所有参数

$@ :所有参数

过程式编程的代码执行顺序

顺序执行: 逐条执行

选择执行: 代码存在一个或多个分支,只执行其中一个

代码有一个分支:   条件满足时才会执行

两个或以上的分支:只会执行其中一个满足条件的分支

循环执行 : 代码片段(循环体)要执行0,1 或多个来回

选择执行: 单分支的if语句

bash编程2的更多相关文章

  1. bash编程之多分支if 语句及for循环

    第十七章.bash编程之多分支if 语句及for循环 if语句三种格式 多分支if语句练习 for循环 17.1.if语句的三种格式 单分支if语句 if condition;then 条件为真执行的 ...

  2. bash编程总结

    bash应该是目前Linux上最流行的shell脚本解释程序了(还有个shell叫dash,我太讨厌这个东东了.),只要你在linux上工作,并且希望自己能够工作得更愉悦,那么你应该熟悉最基本的bas ...

  3. Linux中bash编程

    bash编程也叫shell编程 预定义变量         $? 最后一次执行的命令的返回状态.如果这个变量的值为0,证明上一个命令正确的执行:如果这个变量返回的值非0(具体是那个数,有命令自己来决定 ...

  4. bash编程基础

    bash变量 变量命名: 1.不能使用程序中的关键字(保留字) 2.只能使用数字.字母和下划线,且不能以数字开头 3.要见名知义 变量类型: 数值型:精确数值(整数),近似数值(浮点型) 字符型:ch ...

  5. bash编程之循环控制:

    bash编程之循环控制: for varName in LIST; do 循环体 done   while CONDITION; do 循环体 done   until CONDITION; do 循 ...

  6. [shell] Bash编程总结

    由于工作需要,之前的几个月写了一些Bash脚本,主要完成自动测试.打包.安装包等.虽然相比C++编程,要简单.傻瓜,但其在类Unix系统中可以大大提高工作的效率.所以在此对脚本编程过程中一些注意事项进 ...

  7. bash编程的信号捕获:

    bash编程的信号捕获: kill -l KILL无法捕捉:   trap 'COMMAND' SIGNAL,    信号捕捉用于:在中途中止时做一些清理操作.   一. trap捕捉到信号之后,可以 ...

  8. 怎样用 Bash 编程:逻辑操作符和 shell 扩展

    学习逻辑操作符和 shell 扩展,本文是三篇 Bash 编程系列的第二篇. Bash 是一种强大的编程语言,完美契合命令行和 shell 脚本.本系列(三篇文章,基于我的 三集 Linux 自学课程 ...

  9. 怎样用 Bash 编程:语法和工具

    让我们通过本系列文章来学习基本的 Bash 编程语法和工具,以及如何使用变量和控制运算符,这是三篇中的第一篇. Shell 是操作系统的命令解释器,其中 Bash 是我最喜欢的.每当用户或者系统管理员 ...

  10. Linux Bash编程

    在Linux系统介绍中,介绍了shell的多个版本,现在的Linux发行版基本都默认使用bash(Bourne Again shell),兼容Bourne shell (sh),本文将简要介绍Bash ...

随机推荐

  1. ruby安装devkit

    双击下载文件,指定解压路径,路径中不能有空格.如C:\DevKit,这个路径就是<DEVKIT_INSTALL_DIR>. > cd <DEVKIT_INSTALL_DIR&g ...

  2. C语言可变参数函数详解示例

    先看代码 printf(“hello,world!”);其参数个数为1个. printf(“a=%d,b=%s,c=%c”,a,b,c);其参数个数为4个. 如何编写可变参数函数呢?我们首先来看看pr ...

  3. MFC 程序退出方法

    基於對話框的: 1.PostQuitMessage(0);2.PostMessage(WM_QUIT,0,0);3.ExitProcess(0);注意使用时先释放分配的内存,以免造成内存泄露4.exi ...

  4. 20155234 2016-2017-2 《Java程序设计》第2周学习总结

    20155234 2006-2007-2 <Java程序设计>第2周学习总结 教材学习内容总结 %%:表示字符串中的%. %d:以十进制整数格式输出 %f:以十进制浮点式格式输出 %e(% ...

  5. 20155319 实验二 Java面向对象程序设计

    20155319 实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 (一) ...

  6. 20155321 2016-2017-2《Java程序设计》课程总结

    20155321 2016-2017-2<Java程序设计>课程总结 每周作业链接汇总 预备作业1:我期望的师生关系 预备作业2:学习情况的相关调查 预备作业3:安装虚拟机以及学习Linu ...

  7. 20145226夏艺华 《Java程序设计》实验报告一

    实验一 Java开发环境的熟悉(Linux + IDEA) 实验内容 使用JDK编译.运行简单的Java程序: 使用Eclipse 编辑.编译.运行.调试Java程序. 实验步骤 (一)命令行下Jav ...

  8. BZOJ4049][CERC2014]Mountainous landscape-[线段树+凸包+二分]

    Description 现在在平面上给你一条折线P1P2P3...Pn. x坐标是严格单调递增的.对于每一段折线PiPi+1,请你找一个最小的j,使得j>i且走在PiPi+1的人能看到折线PjP ...

  9. day7 opencv+python 读取视频,没有东西

    1.读取视频man.avi, 报错. 我的视频和文件在同一目录下. #coding=utf-8 import numpy as np import cv2 cap = cv2.VideoCapture ...

  10. OAI搭建总结

    我是参考网上的方法:oai搭建之eNB的文章, 接下来就根据自身所遇到的问题再这里总结一下步骤: 一.再官网上下载oai的文件openairinterface5g-master.zip 二.编译的过程 ...