Shell脚本编写

您所在的位置:网站首页 shell脚本写入文件不换行 Shell脚本编写

Shell脚本编写

#Shell脚本编写| 来源: 网络整理| 查看: 265

Shell脚本编写 1. 最简单的Shell脚本示例2. 用户的参数3. 条件表达式1. 逻辑与2. 逻辑或3.逻辑非4. 整数比较运算符5. 常见的字符串比较运算符 Shell脚本命令的工作方式有两种:交互式和批处理

交互式:用户每输入一条命令就立即执行。批处理(Batch):由用户事先编写好一个完整的 Shell 脚本,Shell 会一次性执行脚本中诸多的命令。

查看 SHELL 变量可以发现当前系统已经默认使用 Bash 作为命令行终端解释器了:

1. 最简单的Shell脚本示例 echo $SHELL /bin/bash

举个最简单的shell脚本例子:

vim example.sh #!/bin/bash #For Example BY linuxprobe.com pwd ls -al

Shell 脚本文件的名称可以任意,但为了避免被误以为是普通文件,建议将.sh 后缀加上,表示是一个脚本文件

第一行的脚本声明(#!)用来告诉系统使用哪种 Shell 解释器来执行该脚本;第二行的注释信息(#)是对脚本功能和某些命令的介绍信息,使得自己或他人在日后看到这个脚本内容时,可以快速知道该脚本的作用或一些警告信息;第三、四行的可执行语句也就是我们平时执行的 Linux 命令了。 2. 用户的参数

为了灵活完成工作,必须要让脚本程序能够像之前执行命令时那样,接收用户输入的参数。

符号作用$0对应的是当前 Shell 脚本程序的名称$#对应的是总共有几个参数$*对应的是所有位置的参数值$?对应的是显示上一次命令的执行返回值$1、$2、$3……分别对应着第 N 个位置的参数值

注: $? 不能单独使用, 比如可以和 echo 联合使用 echo $? 显示上次命令执行的返回值。

举栗:

vim example.sh #!/bin/bash echo "当前脚本名称为$0" echo "总共有$#个参数,分别是$*。" echo "第 1 个参数为$1,第 5 个为$5。" [root@linuxprobe ~]# sh example.sh one two three four five six 当前脚本名称为 example.sh 总共有 6 个参数,分别是 one two three four five six。 第 1 个参数为 one,第 5 个为 five。 3. 条件表达式

格式:

[ 条件表达式 ]

注意两边都有空格 空格, 条件表达式中,每个表达式之间也有空格。 比如 1 = 1 即为 1空格=空格1 ! 1 = 1 即位 !空格1空格=空格

若条件成立则返回数字 0,否则便返回其他随机数值。

按照测试对象来划分,条件测试语句可以分为 4 种:

文件测试语句;逻辑测试语句;整数值比较语句;字符串比较语句。

文件测试所用的参数:

运算符作用-d测试文件是否为目录类型-e测试文件是否存在-f判断是否为一般文件-r测试当前用户是否有权限读取-w测试当前用户是否有权限写入-x测试当前用户是否有权限执行

例如判断、etc/fstab 是否为一个目录类型的文件,然后通过 Shell 解释 器的内设$?变量显示上一条命令执行后的返回值。如果返回值为 0,则目录存在;如果返回值为非零的值,则意味着目录不存在:

[ -d /etc/fstab ] echo $? 1 1. 逻辑与

逻辑语句用于对测试结果进行逻辑分析,根据测试结果可实现不同的效果。例如在 Shell终端中逻辑“与”的运算符号是&&,它表示当前面的命令执行成功后才会执行它后面的命令。(类似大学电路里的 短路与,即前边执行失败就不往下执行,整体为失败。一假即假)

[ -e /dev/cdrom ] && echo "Exist" Exist 2. 逻辑或

逻辑“或”,它在 Linux 系统中的运算符号为||,表示当前面的命令执行失败后才会执行它后面的命令。(类似大学电路里的 短路或,即前边执行成功就不往下执行,整体为成功。二真才真) 在这里插入图片描述

3.逻辑非

在 Linux 系统中的运算符号是一个叹号(!),它表示把条件测试中的判断结果取相反值。 比较简单不再举栗。

4. 整数比较运算符 运算符作用-eq是否等于-ne是否不等于-gt是否大于-lt是否小于-le是否小于等于-ge是否大于等于

下边简单举两个例子:(返回0代表成立。) 在这里插入图片描述 举个例子: free 命令,它可以用来获取当前系统正在使用及可用的内存量信息。先使用 free -m 命令查看内存使用量情况(单位为 MB),然后通过 grep Mem:命令过滤出剩余内存量的行,再用 awk '{print $4}'命令只保留第四列,最后用FreeMem=语句的方式把语句内执行的结果赋值给变量。

[root@linuxprobe ~]# free -m total used free shared buffers cached Mem: 1826 1244 582 9 1 413 -/+ buffers/cache: 830 996 Swap: 2047 0 2047 [root@linuxprobe ~]# free -m | grep Mem: Mem: 1826 1244 582 9 [root@linuxprobe ~]# free -m | grep Mem: | awk '{print $4}' 582 [root@linuxprobe ~]# FreeMem=`free -m | grep Mem: | awk '{print $4}'` [root@linuxprobe ~]# echo $FreeMem 582

然后使用整数运算符来判断内存可用量的值是否小于 1024,若小于则会提示“Insufficient Memory”(内存不足)的字样:

[root@linuxprobe ~]# [ $FreeMem -lt 1024 ] && echo "Insufficient Memory" Insufficient Memory 5. 常见的字符串比较运算符 运算符作用=比较字符串内容是否相同!=比较字符串内容是否不同-z判断字符串内容是否为空 [root@linuxprobe ~]# [ -z $String] [root@linuxprobe ~]# echo $? 0 [root@linuxprobe ~]# echo $LANG en_US.UTF-8 [root@linuxprobe ~]# [ $LANG != "en.US" ] && echo "Not en.US" Not en.US


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3