linux脚本编程技术
linux脚本编程技术
一、什么是脚本
脚本是一个包含一系列命令序列的可执行(777)文本文件。当运行这个脚本文件时,文件中包含的命令序列将得到自动执行。
二、脚本编程
#!/bin/sh 首行固定格式
#!表明该脚本的的解析器,这里使用/bin/sh来解析
2.1变量
shell脚本允许用户设置和使用自己的变量,变量可以是数字或者字符串,用户无需指定其类型,也无需在使用前定义。
#!/bin/sh
a="hello world"
b=5
echo “A is: $a” //使用变量时要用$符号
echo “B is $b”
2.2参数
同C程序一样,shell本中也可以使用命令行参数
- $#:传入脚本的命令行参数个数
- $*:所有命令行参数值,在各个参数值之间留有空格
- $0:命令本身(shell文件名)
- $1:第一个命令行参数
- $2:第二个命令行参数
2.3数学计算
shell脚本提供了一个专门的命令expr来计算数学表达式,例如expr 5 +1,但是当要把计算的结果赋值给其他变量的时候,还必须使用反号(键盘上~按键就是反引号)。
var=`expr 20 / 10`
2.4if语句
shell脚本中最基本的流程控制语句就是if-then,使用格式:
if [ condition ] (特别提醒:方括号左右两边必须有空格)
then
commands
else
commands
fi
2.4.1for语句
shell脚本提供了for命令,用于创建类似于c语言编程中for语句一样的循环。使用格式:
for var in list
do
commands
done
2.4.2while语句
shell脚本提供了while命令,用于创建类似于c语言编程中while语句一样的循环。使用格式:
while [ condition ]
do
commands
done
2.5条件比较
比较操作 整数操作 字符串操作
相同 -eq =
不同 -ne !=
大于 -gt >
小于 -lt <
大于或等于 -ge
小于或等于 -le
为空 -z
不为空 -n
例:
- 比较整数a和b是否相等:if [ $a = $b ] (也可用eq)
- 判断整数a是否大于整数b:if [ $a -gt $b]
- 比较字符串a和b是否相等:if [ $a = $b]
- 判断字符串a是否为空: if [ -z $a]
- 判断整数变量a是否大于b:if [ $a -gt $b]
注意:
1. 在“[”和“]”符号的左右都留有空格
2. “=”左右都有空格
-e 文件已经存在
-f 文件是普通文件
-s 文件大小不为零
-d 文件是一个目录
-r 文件对当前用户可以读取
-w 文件对当前用户可以写入
-x 文件对当前用户可以执行

2.6sed编辑器
Sed(Stream Editor) : 流式编辑器又名行编辑器,每次只编辑一行,使用格式如下:
sed [操作选项] ‘命令’ 文件名
常用操作选项:
-n∶指定处理后只显示该行
-n∶指定处理后只显示该行
-e∶进行多项编辑任务
-i∶直接修改读取的文件内容,而不是由屏幕输出
常用命令选项:
p 打印匹配行
a 新增
c 替代一行
d 删除定位行
s 替代一行中的某些部分
2.6.1sed-范例
1. 显示
•sed -n '2p' tmp.txt 只显示第2行
•sed -n '1,3p' temp.txt 打印第1行到第3行
•sed -n '/mov/'p temp.txt 打印含movie的行
2. 删除
•sed ‘2d’ tmp.txt 删除第2行
•sed ‘3,$d’ tmp.txt 删除第3行到最后一行,$:最后一行
3. 查询
sed -n ‘/hello/p’ tmp.txt 查询包括关键字hello的所有行
4. 代替
•sed ‘1c Hi’ tmp.txt 第1行代替为Hi
•sed -n '/hello/p' tmp.txt | sed 's/hello/bird/g'
5. 插入
•sed -i ‘$a bye’ tmp.txt 在最后一行插入bye
2.6.2awk分析器
awk是一个强大的文本分析工具,它把文件逐行的读入,以空格为默认分隔符将每行分割为多个字段。
使用方式:
awk ‘{pattern + action}' filenames
pattern 要查找的内容
pattern 要查找的内容
action 找到匹配内容时所执行的命令
范例:

linux脚本编程技术的更多相关文章
- linux脚本编程技术---8
一.什么是脚本 脚本是一个包含一系列命令序列的可执行(777)文本文件.当运行这个脚本文件时,文件中包含的命令序列将得到自动执行. 二.脚本编程 #!/bin/sh 首行固定格式 #!表明该脚本的的解 ...
- javascript学习 真正理解DOM脚本编程技术背后的思路和原则
本文学习来源于<javascriptDOM编程艺术>仅作笔记 学会怎样才能利用DOM脚本编程技术以一种既方便自己更体贴用户的方式去充实和完善你们的网页. 循序渐进:从最核心的内容开始,逐步 ...
- linux脚本编程(shell)浅介 (转载)
linux脚本(shell)编程 啊,昨天上网看到一篇讲 linux/unix shell 的文章,想想自己最后写这东西也是一年前的事了,想想都快忘光了. 还是整理一下,做一次回顾,以后说不定还用得上 ...
- 【JavaScript脚本编程技术详解-----(一)】
首先说明,本系列教程是写给有一定的JavaScript编程基础的同学看的,最好还有其它的编程语言经验,因为里面可能涉及一些其它的程序设计语言写的源代码,这都是我自己总结的经验,我喜欢在学习一门新的编程 ...
- 【Socket】linux无连接编程技术
1.mystery引入 1)无连接编程也称为UDP编程,是采用UDP报文的形式完成的网络通信 2)UDP是一种对等通信,本身不区分服务器端和客户端 3)对等通信,最容易想到的 ...
- 【转】Linux Shell脚本调试技术
本文转载自:https://www.ibm.com/developerworks/cn/linux/l-cn-shell-debug/ Shell脚本调试技术 本文全面系统地介绍了shell脚本调试技 ...
- Linux命令行与Shell脚本编程大全
快来参加<Linux命令行与Shell脚本编程大全>学习吧,提升技能,展示自我. 点击链接即可进入学习:https://s.imooc.com/WTmCO6H 课程亮点适合零基础读者,从零 ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
随机推荐
- Java语言中几个常用的包
Java采用包结构来组织和管理类和接口文件.本文介绍Java语言类库中几个常用的包,因为这几个包在软件开发与应用中经常需要用到,其中有些包是必要的.若是离开它,还真不能做事情了. 第一个包:java. ...
- UNIX进程
UNIX进程控制的博客 http://blog.csdn.net/yang_yulei/article/details/17404021 Linux的概念与体系 http://www.cnb ...
- 渲染物体到一张UITexture上
把这个脚本挂到一个Camera上 using UnityEngine; using System.Collections; [RequireComponent(typeof(Camera))] pub ...
- /etc/securetty文件
/etc/securetty 文件允许你规定“root”用户可以从哪个tty设备登录. 登录程序(通常是/bin/login)需要读取“/etc/securetty”文件. 它的格式:列出来的tty设 ...
- perl 引用(一)
1. 普通变量引用 variable reference 引用就好比C语言的指针,引用变量存储被引用变量的地址.赋值时注意要在变量前加上 \;使用时要多加一个 $ . 当然,引用也可以成为简单变量,可 ...
- 构建web应用示例
1.1 请求方法的判断 var http = require('http'); var server = http.createServer(function(request,response){ s ...
- Java for LeetCode 233 Number of Digit One
Given an integer n, count the total number of digit 1 appearing in all non-negative integers less th ...
- Centos6.5 SVN服务器 搭建及配置
现有的项目开发中,版本控制机必不可少.合理的使用版本控制可以提高开发效果,在保证项目是最新的同时,也提高了源代码的安全性. 工具/原料 接入Internet的一台Centos6.5Linux计算机 安 ...
- Android Multimedia框架总结(二)MediaPlayer框架及播放网络视频案例
前言:前面一篇我们介绍MediaPlayer相关方法,有人说,没有实际例子,看得不是很明白,今天在分析MediaPlayer时,顺带一个播放网络视频例子.可以自行试试.今天分析的都是下几篇介绍各个模块 ...
- addsubview跟insertsubview的区别
子视图是以栈的方式存放的. 每次addsubview时都是在最后面添加. 每次在addsubview前和addsubview后可以看看[self.view.subViews count]: 你看看你的 ...