Linux就该这么学——编写SHELL脚本

初识SHELL

Shell脚本命令的工作方式:

交互式 : 用户每输入一条命令就会立即执行

批处理 : 由用户事先编好一个完整的SHELL脚本,shell脚本会一次性执行脚本中诸多的命令.

:

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

2.可以把SHELL终端解释器当做人与计算机之间的”翻译官”,它作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供诸如循环,分支等高级编程语言才有的控制结构特性.

SHELL脚本初体验之我的第一个SHELL脚本

  1. 如果想查看当前所在工作路径并列出当前目录下所有的文件及属性信息

图为执行bash example.sh命令运行结果

图执行./example.sh命令运行结果

Shell脚本进阶体验之接收用户的参数

下面各个变量所对应的意思

$0:当前脚本名称

$#:总共有几个参数

$*:对应的是所有位置的参数值

$?对应的是显示上一次命令的执行返回值

$1,$2,$3,$4,...:则分别对应着第N个位置的参数值

示例:

图执行bash example.sh one two three four five six运行结果

Shell脚本进阶体验之判断用户的参数(重点)

引言

系统在执行mkdir命令时会判断用户输入的信息,即判断用户指定的文件夹名称是否已经存在,如果存在则提示报错;反之则自动创建.shell脚本中的条件测试语法可以判断表达式是否成立,若条件成立则返回数字0,否则便返回其他随机数值.

测试语句格式 : [ 条件表达式 ]

注 : 测试语句格式中的中括号两边应有一个空格

条件测试语句的种类 : 文件测试语句/逻辑测试语句/整数值比较语句/字符串比较语句

文件测试语句 :

即使用指定条件来判断文件是否存在或者权限是否满足等情况的运算符.

表 文件测试所用的参数


运算符


作用


-d


测试文件是否为目录类型


-e


测试文件是否存在


-f


测试文件是否为一般文件


-r


测试当前用户是否有权限读取


-w


测试当前用户是否有权限写入


-x


测试当前用户是否有权限执行

例子1 :

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

例子2 :

判断/etc/fstab是否为一般文件,如果返回值为0,则代表文件存在,而且为一般文件.

逻辑测试语句

逻辑语句用于对测试结果进行逻辑分析,根据测试结果可实现不同的效果

逻辑测试语句的符号 :

与(&&) : 表示当前命令执行成功后才会执行它后面的命令

或(||) : 表示当前命令执行失败后才会执行他后面的命令

非(!) : 表示把条件测试中的判断结果取相反值.

例子1 :

判断/dev/cdrom是否存在,如存在则输出Exist字样

例子2

判断当前是否为非管理员身份

例子3

判断当前是否是管理员

例子4

当前我们正在登录的即为管理员用户—root。下面这个示例的执行顺序是,先判断当前 登录用户的 USER 变量名称是否等于 root,然后用逻辑运算符“非”进行取反操作,效果就 变成了判断当前登录的用户是否为非管理员用户了。后若条件成立则会根据逻辑“与”运 算符输出 user 字样;或条件不满足则会通过逻辑“或”运算符输出 root 字样,而如果前面的 &&不成立才会执行后面的||符号。

整数值比较语句

整数比较仅是对数字的操作.

注: 1. 不能将数字和字符串/文件等内容一起操作

2. 不能想当然地使用日常生活中的等号/大于号/小于号等来判断

3. 因为等号与赋值命令符冲突,大于号和小于号分别是输出重定向和输

入重定向冲突,因此一定要使用规范的整数比较运算符来进行操作

可用的整数比较运算符


参数


作用


-eq


是否等于


-ne


是否不等于


-gt


是否大于


-lt


是否小于


-le


是否小于等于


-ge


是否大于等于

例子1 :

判断10是否大于10以及10是否等于10

例子2 :

在 2.4 节曾经讲过 free 命令,它可以用来获取当前系统正在使用及可用的内存量信息。 接下来先使用 free -m 命令查看内存使用量情况(单位为 MB),然后通过 grep Mem:命令过滤 出剩余内存量的行,再用 awk ‘{print $4}‘命令只保留第四列,后用 FreeMem=`语句`的方式把语句内执行的结果赋值给变量。 这个演示确实有些难度,但看懂后会觉得很有意思,没准在运维工作中也会用得上。我们使用整数运算符来判断内存可用量的值是否小于 1024,若小 于则会提示“Insufficient Memory”(内存不足)的字样:

字符串比较语句

字符串比较语句主要用于判断字符串是否为空值,或两个字符串是否相同.它经常用于判断某个变量是否未被定义(即内容为空值).

常见的字符串比较运算符


运算符


作用


=


比较字符串内容是否相同


!=


比较字符串内容是否不同


-z


判断字符串内容是否为空

例子1 :

判断String变量是否为空,进而判断是否定义了这个变量

例子2 :

当用于保存当前语系的环境变量值 LANG 不是英语 (en.US)时,则会满足逻辑测试条件并输出“Not en.US”(非英语)的字样:

原文地址:https://www.cnblogs.com/studyandstudy/p/12182584.html

时间: 2024-08-02 01:59:44

Linux就该这么学——编写SHELL脚本的相关文章

跟着老刘学《Linux就该这么学》第五天--编写Shell脚本

编写Shell脚本可以将Shell终端解释器当作人与计算机硬件之间的"翻译官",它作为用户与Linux系统内部的通信媒介,除了能够支持各种变量与参数外,还提供了诸如循环.分支等高级编程语言才有的控制结构特性.要想正确使用Shell中的这些功能特性,准确下达命令尤为重要.Shell脚本命令的工作方式有两种:交互式和批处理. 交互式(Interactive):用户每输入一条命令就立即执行. 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多的命

Linux系统编写shell脚本批量创建和删除用户

一.编写shell脚本批量添加用户 实现方法:判断用户是否存在,存在则返回错误提示,同时判断用户文件是否存在,不存在则退出 1.创建添加用户脚本 [[email protected] ~]# vim useradd.sh #!/bin/bashif [ $# -eq 0 ];then        echo "你没有输入任何文件!"        exit 1fi if [ ! -f $1 ];then        echo "输入有误!"        exit

linux服务器部署jar包以及shell脚本的书写

背景:记录在linux环境下部署jar程序的过程 1 部署过程记录 1.1 程序结构 这里的main函数就在DemRest2.java 文件中. 为了部署方便,要做到以下两点: 1 在导出的jar包中不包含依赖的jar文件 2 程序用到的配置文件可以让用户进行自定义 ,不将其放在jar包中. 1.2 导出jar包 这里导出普通的jar包即可.为了方便传输,只导出必须的程序文件. 在jar包导出后,进入导出的jar包中,将配置文件tws.properties文件删除. 1.3 程序部署 将所有需要

编写shell脚本和执行

这次的学习内容: 认识shell,如何编写shell脚本和执行Shell 其实就是一个解释执行命令的程序,所谓shell编程其实就是用一定的语法将各种基本的命令组合起来,让shell程序去解释执行.如果对windows的dos有了解,可以这样理解,其实shell脚本文件和.bat批处理文件差不多.然而linux下的shell比起windows的dos强大很多,呵呵.为了安全起见,创建一个普通的账号进行学习]# useradd cnetsa]# passwd cnetsa然后使用 cnetsa 这

python编写shell脚本详细讲解

今天需要编写一个shell脚本实现App自动生成的功能,需要处理HTTP REST请求,解析JSON,处理文件,执行命令等,本来想用shell搞定,但感觉比较麻烦,还是用python吧,虽然以前用Python都是在树莓派上玩的,多尝试一种方法总是好的. 虽然我受linux的影响甚深,但是对于*nix 里随处可见的sh脚本却是讨厌之极.为什么讨厌呢?首先是因为sh脚本那莫名其妙的语法,感觉就像随写随扔的程序,完全没有任何美感可言.其次是sh脚本的处理能力还是比较弱的,在文本处理.XML处理还有网络

Linux 笔记 - 第十二章 Shell 脚本

博客地址:http://www.moonxy.com 一.前言 常见的编程语言分为两类:一类是编译型语言,如:C.C++ 和 Java等,它们远行前要经过编译器的编译.另一类是解释型语言,不需要编译,执行时,需要使用解释器一行一行地解释执行,如:awk.perl.python 和 shell 等. Shell 是一种脚本语言,属于上面提到的第二类语言,就必须有对应的解释器来执行这些脚本,最常见的脚本解释器是:bash. 在编写 Shell 脚本时,我们不仅会用到很多的 Linux 命令.正则表达

[转帖]编写shell脚本所需的语法和示例

编写shell脚本所需的语法和示例 https://blog.csdn.net/CSDN___LYY/article/details/100584638 在说什么是shell脚本之前,先说说什么是shell. shell是外壳的意思,就是操作系统的外壳.我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls.cd.pwd等等.总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动.暂停.停止程序的运行或对计算机进行控制. shell 是

linux系统下重启tomcat的shell脚本

linux系统下重启tomcat的shell脚本: tomcat_home=/opt/apache-tomcat-6.0.32 #找到tomcat进程的id并kill掉 ps -ef |grep tomcat |awk {'print $2'} | sed -e "s/^/kill -9 /g" | sh - #删除日志文件,如果你不先删除可以不要下面一行 rm $tomcat_home/logs/* -rf #删除tomcat的临时目录 rm $tomcat_home/work/*

Ubuntu系统编写shell脚本程序一次安装多个软件包

编写shell脚本程序一次安装多个软件,主要用于一些软件依赖环境配置. 1.shell脚本程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 2.当编辑好脚本后,还必须使其可执行. 使脚本可执行: chmod +x filename 3.然后,您可以通过输入: ./filename 来执行您的脚本. 如下: 下面是我安装NS3之前,安装NS3依赖的多个软件包: 1.在vi中编