[Linux] shell脚本 - 实践
一、shell简介
脚本是一个文本文件,需要解释器(bash)
脚本后缀 test.sh 表示,也可以不需要
| shell, python | 需要解释器:bash, tcsh sh, python | 解释执行 |
| c, c++ | xx.c 编译链接---二进制可执行程序xx | 编译型 |
| java | xx.java---javac编译----xx.class二进制不可执行---必须java解释器(虚拟机)java.exe---java.exe.xx.class | 编译解释 |
which bash
/usr/bin/bash
二、shell语法:变量,条件,循环,case,函数,脚本调用,c语言调用,awk,sed
1.变量
——shell中的变量的定义和值在解释器中,没有类型

——删除 unset
本地变量:用户自定义。
环境变量:
从父进程bash中继承。 添加环境变量:export
$PS1,$PS2:提示符
$0:shell脚本的名字
$#:传递给脚本参数的个数
$$:shell脚本的进程号
参数变量:
$1, $2, ... 脚本程序的参数



运行 a.sh
1. bash a.sh
2. chmod u+x a.sh

2.条件
test条件类型:

if

3.循环
for

算术运算:

while

until

4.case


5.函数
——shell当中没有唯一主函数main()的要求
函数中定义的变量,在函数结束后,仍然能够调用,因为变量是在解释器中定义的。
函数调用:


传参:

6.脚本调用:
脚本调用:
1.普通调用

2. 以 . 命令执行,把脚本放在当前解释器中执行:

不同脚本变量调用
1.调用时 向b.sh传参:

2.做成环境变量(环境变量可以继承)

7. c语言调用shell脚本 exec

8.awk: 文本处理工具
格式化报文或从一个大的文本文件中抽取数据包
awk [-F field-separator] 'commmands' input-fils(s)
[-F field-separator] 分隔符,空格则省略
基本语法:awk 'pattern {action}' file
pattern: 匹配文本模式(正则表达式,数字或其他条件)。action: 当前模式匹配成功时执行的动作(打印,修改等)。file: 要处理的记录。
1.在命令行中awk。将小数转化为整数:

2.在脚本中awk。

应用举例:

9.sed
一个非交互性文本流编辑器,它编辑文件或标准输入到处的文本拷贝。就是sed


应用举例:

10.grep

11.sort
对文件内容进行排序。将许多不同域按不同的列顺序分类。

顺序排列:

逆序排列 
12.uniq
用于重复行。通常与sort一起使用,先排序后去重。



浙公网安备 33010602011771号