1.Shell编译器
默认解析器是bash
echo $SHELL
2.创建第一个示例脚本,hello world
touch helloworld.sh
vim helloworld.sh
#!/bin/bash #指定解析器
echo "helloworld"
运行区别:
1.sh不需要执行权限 本质是bash解析器帮你执行脚本,所以脚本本身不需要执行权限
2. ./helloworld.sh 需要执行权限 ,本质是脚本需要自己执行
创建一个多命令脚本
需求:在/home/某目录下创建一个banzhang.txt,在banzhang.txt文件中增加"I love cls"
系统变量和自定义变量
常用系统变量:查看所有环境变量 env
$HOME 当前家目录
$PWD 当前目录
$SHELL 默认解析器
$USER 当前用户
自定义变量
定义变量:变量=值 =号两边没有空格
撤销变量:unset 变量
设置静态变量B=2,无法unset(重启时自动删除)
注意事项:
1.变量名可以由字母,数字,下划线组成,但是不能以数字开头,环境变量名建议大写
2.等号两边不能有空格
3.在bash中,变量默认类型都是字符串类型,无法字节进行数值运算
4.变量的值如果有空格,需要使用双引号或者单引号括起来
可将变量提升为全局变量:export 变量名
特殊变量:基本语法
$n #功能描述:n为数字,$0表示该脚本名称,$1-$9代表第一到第九个参数,十以上的参数需要用大括号表示${10}
$# 功能描述:获取所有输入参数个数,常用于循环
$* 这个变量代表命令行中所有的参数 $*把所有的参数看成一个整体
$@ 这个变量也代表命令行中所有的参数,不过$@把每个参数都区别开来
$? 最后一条执行命令的返回状态,如果这个变量值为0,证明上一个命令正确执行,如果这个变量的值为非0(具体为哪个值,由命令来确定,则证明上一个命令执行不正确)
运算符:
基本语法:
1.”$((运算符))“或$[运算符]
2.expr +,-,\*,/, % 加减乘除,取余
注意:expr运算符之间要有空格
3+2
(3+2)×4
条件判断:
1.基本语法
[ condition ] 注意condition前后要有空格
注意:条件非空即为true,[atguigu]返回ture,[]返回false
常用判断条件
(1)两个整数之间比较
= 字符串比较
-lt 小于(less than) -le 小于等于(less equal) -eq 等于(equal) -qt 大于(greater than) -ge 大于等于(greater than) -ne 不等于(not equal)
(2)按照文件权限进行判断
-r 有读的权限 (read) -w 有写的权限(write) -x 有执行的权限 (excute)
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence) -d 文件存在并且是一个目录(directory)
多命令判断
&&表示前一条命令执行成功时,才执行后一条命令
||表示上一条命令执行失败后,才执行下一条命令
流程控制:
if判断:
1.基本语法:
if [ 条件判断式 ] :then
程序
fi
或者
if [条件判断式]
then
程序
fi
注意事项:
(1)[ 条件判断式 ] 中括号和条件判断式之间必须有空格
(2)if后面必须有空格
case $变量名 in
”值1“)
如果变量的值等于值1,则执行程序1
;;
”值2“)
如果变量的值等于值1,则执行程序
;;
*)
;;
esac
注意事项:
For循环
1.for((i=0;i <100;i++))
do
程序
done
2. for 变量 in 值1,值2,值3
do
程序
done
案例:打印所有参数
while [ 条件判断式 ]
do
程序
done
基本语法
read(选项)(参数)
选项:
-p: 指定读取值时的提示符
-t:指定读取值时等待的时间
系统函数
basename [string/pathname] [suffix]
Dirname
自定义函数
[function] funname[()]
{
action
[return int;]
}
注意:
1.必须在调用函数之前,先声明函数,shell脚本时逐行运行的,不会像其他语言一样先编译
2.函数返回值,之恶能通过$?系统变量获得,可以显性的加return返回,如果不加,将以最后一条命令运行结果,作为返回值,return后跟数值n(0-255)
cut:在文件中负责剪切数据用的,从文件的每一行剪切字节,字符和字段并将这些字节,字符和字段输出
基本用法:cut [选项参数] filename
说明:默认分隔符是制表符
选项参数说明
-f 列号,提取第几列
-d 分隔符,按照指定分隔符分割列
cut -d : -f 3-
sed
基本语法
sed [选项参数] 'command' filename
选项参数:
-e 字节在指令列模式上进行sed的动作编辑,多指令操作
命令描述
a 新增,a的后面可以接字符串,在下一行出现
d 删除
s 查找并替换
awk:一个强大的文本分析工具,把文件逐行的读取,以空格为默认分隔符将每行切片,切开的部分在进行分析处理
基本用法
awk [选项参数] ‘pattern1{action} pattern2{actions2} ...’ filename
pattern:表示AKW在数据中查找的内容,就是匹配模式
action:在找到匹配内容时所执行的一系列命令
选项参数说明
-F 指定文件拆分隔符
-v 复制一个用户定义变量
来源:oschina
链接:https://my.oschina.net/u/3966437/blog/4284799