博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell编程
阅读量:4843 次
发布时间:2019-06-11

本文共 1920 字,大约阅读时间需要 6 分钟。

1、shell编程语法

shell结构:

  1. #! 指定执行脚本的shell,不写以linux默认的shell执行
  2. #注释行
  3. 命令和控制结构

创建shell程序的步骤:

  1. 创建一个包含命令和控制结构的文件
  2. 修改这个文件的权限使它可以执行,使用chmod u+x
  3. 执行 ./XXX或sh xxx执行

shell变量

  • shell中有两类变量:临时变量和永久变量。
  • 临时变量:是shell程序内部定义的,其使用范围仅限于定义它的程序,对其他程序不可见。包括:用户自定义变量、位置。
  • 永久变量是环境变量,其值不随shell脚本的执行结束而消失。

在使用变量是要在变量前加上前缀符“$”

设置变量:习惯上用大写字母来命名变量。变量名只能以字母表中的字符开头,不能使用数字。

变量赋值:赋值号“=”两边应该没有空格

  • 定义时赋值:NUM=1
  • 将一个命令的执行结果赋给变量,如:TIME=’date’
  • 将一个变量赋给另一个变量,如:A=$B
  • 使用echo命令查看变量值。如:echo $A
  • 删除变量 unset NAME

位置变量和特殊变量

shell解释执行用户命令时,将命令的第一个部分作为命令名,其它部分作为参数。由出现在命令行上的位置确定的参数称为位置参数。例如:ls –l file1 file2 file3

  • $0 代表这个程序的文件名ls –l
  • $n 代表这个程序的第n个参数值,n=1-9

特殊变量:

  • $* 这个程序的所有参数
  • $# 这个程序的参数个数
  • $$ 这个程序的PID
  • $! 执行上一个后台命令的PID
  • $? 执行上一个命令的返回值

read命令:从键盘读入数据,赋值给变量

read USERNAME--会有输入提示符,输入后将此输入值作为值赋予变量USERNAME

expr命令:对整数型变量进行算术运算,操作运算符间有空格隔开。

expr 3 + 5

expr $VAR1 – 5

expr $VAR1 / $VAR2

expr $VAR1 \* 10

expr ‘expr 5 + 7’/ $VAR4

var4=’expr $var1 / $var2’

变量测试语句:用于测试变量是否相等、是否为空、文件类型等

格式:test 测试条件

测试范围:整数、字符串、文件

字符串测试:

  • test str1=str2   --测试字符串是否相等
  • test str1!=str2  --测试字符串是否不相等
  • test str1          --测试字符串是否不为空
  • test –n str1     --测试字符串是否不为空
  • test –z str1     --测试字符串是否为空

整数测试:

  • test int1 –eq int2    --测试整数是否相等
  • test int1 –ge int2    --测试int1是否>=int2
  • test int1 –gt int2    --测试int1是否>int2
  • test int1 –lt int2     --测试int1是否<=int2
  • test int1 –lt int2     --测试int1是否<int2
  • test int1 –ne int2   --测试整数是否不相等

文件测试:

  • test –d file  --指定文件是否为目录
  • test –d file  --指定文件是否为常规文件
  • test –x file  --指定文件是否可执行
  • test –r file  --指定文件是否可读
  • test –w file --指定文件是否可写
  • test –a file  --指定文件是否存在
  • test –s file  --文件的大小是否非0

变量测试语句一般不单独使用,一般作为if语句的测试条件,如:if test –d $1 then … fi,可以使用[]进行简化,如:test –d $1 等价于[-d $1]

多个条件的联合:

  • -a:逻辑与,仅当两个条件都成立时,结果为真。
  • -o:逻辑或,两个条件只要有一个成立,结果为真。

exit语句:退出程序执行,并返回一个返回码,返回码为0表示正常退出,非0表示非正常退出。

for…done 语句

格式:for 变量 in 名字表    do 命令列表 done

awk命令应用

awk –F域分隔符 ‘命令’

示例:

  • awk –F: ‘$3==0 {print $1}’ /etc/passwd --检测系统中UID为0的用户
  • awk –F: ‘length($2)==0 {print $1}’ /etc/shadow --检测系统中密码为空的用户

 

2、shell脚本调试

3、shell应用实例

转载于:https://www.cnblogs.com/limiracle/p/3908031.html

你可能感兴趣的文章
springmvc学习笔记(18)-json数据交互
查看>>
STL容器介绍
查看>>
如何解决定时文章没法正常发布
查看>>
基于Jmeter+maven+Jenkins构建性能自动化测试平台
查看>>
C#属性升级版--自动属性-chapter 3 P34-36
查看>>
IP 数据包分析上
查看>>
整数数组中最大子数组的和
查看>>
CSS图片垂直居中实现方法详解
查看>>
Python3之os模块
查看>>
GMF改变结点颜色
查看>>
页面定制CSS代码
查看>>
mysql严格模式的开启、关闭
查看>>
WP7获取ISolatedStorage指定文件夹下所有子文件夹或者文件数
查看>>
十大电子论坛推荐
查看>>
返璞归真——OO第四单元总结暨学期总结
查看>>
spring webflow2局部刷新是如何实现的?
查看>>
Delphi edit只能输入数字和退格键
查看>>
一个数的拆分问题
查看>>
nginx ----> nginx配置/反向代理/负载均衡
查看>>
sqlTransaction 简单的应用
查看>>