Linux就该这么学--Shell脚本基本应用
1.接收用户的参数:
Shell脚本为了能够让用户更灵活的完成工作需求,可以在执行命令时传递参数:(命令名 参数1 参数2...)
Shell预定义变量:
$0 当前执行Shell脚本的程序名
$1-9,${10},${11}...
$# 一共有多少个参数
$* 所有位置变量的值
$? 判断上一条命令是否执行成功,0为成功,非0为失败。
eg.
创建并编辑Demo.sh:
vim Demo.sh
编辑内容如下:
#!/bin/bash
echo "当前脚本名称为$0"
echo "总共有$#个参数,分别是$*"
echo "第1个参数为$1,第5个为$5"

2.判断用户的参数
Shell 脚本有时还要判断用户输入的参数,例如像mkdir命令一样,当目录不存在则创建,若已存在则报错,条件测试语句能够测试特定的表达式是否成立,当条件成立时返回值为0,否则返回其他数值。
格式:[ 条件表达式 ] (两边均有一个空格)
细分测试语句有:文件测试、逻辑测试、整数值比较、字符串比较
文件测试:[ 操作符 文件或目录名 ]
-d 测试是否为目录
-e 测试文件或目录是否存在
-f 判断是否为文件
-r 测试当前用户是否有权限读取
-w 测试当前用户是否有权限写入
-x 测试当前用户是否有权限执行
eg.
判断/home是否为目录:
[ -d /home ]
显示上一条命令的返回值,非0则为失败,即不是目录:
echo $?

判断/home/Demo.sh是否为文件:
[ -d /home/Demo.sh ]

符号&&代表逻辑上的“与”,当前面的命令执行成功才会执行后面的命令,判断/home/Demo.sh设备是否存在,若存在则输出Exit:
[ -e /home/Demo.sh ] && echo "Exit"

逻辑测试:[ 表达式1 ] 操作符 [ 表达式2 ]
&& 逻辑的与,“而且”的意思
|| 逻辑的或,“或者”的意思
! 逻辑的否
eg.
USER变量是当前登录的用户名:
echo $USER

若当前登录的用户不是root,则输出user,执行后结果为空:
[ $USER != root ] && echo "user"

登录ftpuser,再来测试便输出user字样:

换回root用户后用加强版的判断语句,非root用户则输出user,若是root则直接输出root:
[ $USER != root ] && echo "user" || echo "root"

这里,请思考一下&&与||的逻辑含义,因为前面的&&不成立,所有后面的||才会执行。
整数值比较:[ 整数1 操作符 整数2 ]
-eq 判断是否等于
-ne 判断是否不等于
-gt 判断是否大于
-lt 判断是否小于
-le 判断是否等于或小于
-ge 判断是否大于或等于
比较10是否大于10:
[ 10 -gt 10 ]

比较10是否等于10:
[ 10 -eq 10 ]

获取当前可用的内存量,并将此值赋值给变量FreeMem:
首先用free -m 查看以m为单位的内存使用情况,然后grep Mem:过滤出剩余内存的行,最后用awk '{print $3}'过滤只保留第三列,而FreeMem='语句'则表示执行里面的语句后赋值给变量。
FreeMem=`free -m | grep Mem:| awk '{print $3}'`
FreeMem=``(这里的`是反引号,Tab键的上面,1的左边)
FreeMem=`free -m | grep Mem:| awk '{print $3}'`

判断此值是否小于2048(单位是M),若小于则提示内存不足:
[ $FreeMem -lt 2048 ] && echo "内存不足"

字符串比较:[ 字符串1 操作符 字符串2 ]
操作符:
= 比较字符串内容是否相同
!= 比较字符串内容是否不同
-z 判断字符串内容是否为空
判断String变量是否为空值:
[ -z $String ]
上一条命令执行成功,说明变量String确实为空值:
echo $?

输出当前的系统语言:
echo $LANG

判断当前的系统语言是否为英文,否则输出“不是英文”:
[ $LANG != "en.US" ] && echo "不是英文"

Linux就该这么学--Shell脚本基本应用的更多相关文章
- Linux就该这么学--Shell脚本条件语句(二)
1.for条件语句 先读取多个不同的变量值,然后逐一执行同一组命令. 从列表文件中读取主机地址,逐个测试是否在线. 从ipadds.txt中读取主机地址后赋值给HLIST变量后逐个ping列表中的主机 ...
- Linux就该这么学--Shell脚本条件语句(一)
1.条件测试语句能够让Shell脚本根据实际工作灵活调整工作内容,例如判断系统的状态后执行指定的工作,或创建指定数量的用户,批量修改用户密码,这些都可以让Shell脚本通过条件测试语句完成. if条件 ...
- linux c程序中获取shell脚本输出的实现方法
linux c程序中获取shell脚本输出的实现方法 1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作. ...
- Linux自动安装JDK的shell脚本
Linux自动安装JDK的shell脚本 A:本脚本运行的机器,Linux B:待安装JDK的机器, Linux 首先在脚本运行的机器A上确定可以ssh无密码登录到待安装jdk的机器B上,然后就可以在 ...
- Linux学习Day6:编写Shell脚本
Shell脚本命令的工作方式有两种: 交互式(Interactive):用户每输入一条命令就立即执行. 批处理(Batch):由用户事先编写好一个完整的Shell脚本,Shell会一次性执行脚本中诸多 ...
- linux 的基本操作(编写shell 脚本)
终于到shell 脚本这章了,在以前笔者卖了好多关子说shell脚本怎么怎么重要,确实shell脚本在linux系统管理员的运维工作中非常非常重要.下面笔者就带你正式进入shell脚本的世界吧. 到现 ...
- Linux 小知识翻译 - 「Shell 脚本」
这次说说「Shell 脚本」. 根据上回的介绍,Shell就是「作为联系Linux和用户的接口而存在的软件」.在Linux环境中,通过Shell来操作系统很普遍. 这里,考虑到有时候可能想要「多次的进 ...
- linux批量修改文件名的shell脚本
linux中批量修改文件名的shell脚本代码,主要是使用了rename,结合shell,喜欢的朋友可以参考下 使用 rename 命令 ======================== NAME ...
- linux C程序中获取shell脚本输出(如获取system命令输出)
转载自 http://blog.csdn.net/hjxhjh/article/details/7909518 1. 前言 Unix 界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些 ...
随机推荐
- workflow engine Ruote初体验之三(条件与美元符号)
条件 我们可以用:if和:unless公共属性来进行条件判断,或者使用if,given,once或者equals(已经过时)关键字. 使用:if属性: 1 cursor do 2 participan ...
- An error occurred uploading to the iTunes Store - Please upgrade Java
Yesterday there were an update to Jave (1.6.0_31) in the "Software update", but now when I ...
- DB2和MySQL常用SQL整理
1.Truncate删除表中所有数据 truncate table USER immediate; 说明:Truncate是一个能够快速清空资料表内所有资料的SQL语法.并且能针对具有自动递增值的字段 ...
- SSO单点登录系列1:cas客户端源码分析cas-client-java-2.1.1.jar
落雨 cas 单点登录 希望能给以后来研究cas的兄弟留下一点思路,也算是研究了两天的成果,外国人的代码写的很晦涩,翻译下来也没有时间继续跟进,所以有错误的还请大家跟帖和我讨论,qq 39426378 ...
- 一次测试岗位针对Java和接口的面试题
1.post和get的区别? 1. get是从服务器上获取数据,post是向服务器传送数据.2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在UR ...
- 在cmd窗口输入命令遇到You must run this command from a command prompt with administrator privilege怎么办?
点开始菜单,找到Accessories(附件),找到Command Prompt窗口,点右键,选“run as administrator”(以管理员身份运行),之后再执行先前的命令就好了. 2017 ...
- js 快速排序
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- AutoCAD如何设置A0A1图纸
可以从网上下载相应的图纸模板,下载之后可以发现有相应的文字和模板文件 随后我们新建并找到这个dwt文件模板(比如要做一个A1的模板) 随后即可发现模板的样式,包括每种颜色的粗细,颜色和明细栏等 ...
- HDOJ 2829 Lawrence
四边形不等式优化DP Lawrence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Othe ...
- Asp 解析 XML并分页显示
Asp 解析 XML并分页显示 Asp 解析 XML并分页显示,演示样例源代码例如以下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr ...