shell入门
shell
介绍:命令行解释器
作用:接收用户命令,操作调用内核
特点:易编写、调试、灵活性强
shell解释器
1 |
|
入门
以#!/bin/bash开头(指定解析器)
创建
1 |
|
编写
1 |
|
1 |
|
执行
1 |
|
shell变量
常用
$HOME、$PWD、$SHELL、#USER
自定义
(1)定义:变量=值
(2)撤销:unset 变量
(3)声明静态变量:readonly变量,注意不能unset
规则
(1)变量名由字母、数字、下划线组成,不能以数字开头,环境变量名建议大写
(2)等号两侧不能由空格
(3)bash中,变量默认类型都是字符串类型,无法直接进行数值运算。
(4)变量值如果有空格,需要用双引号或单引号括起来。
(5)全局变量:export 变量名
特殊变量
$n
传递给脚本或函数的参数。n 是一个数字,表示第几个参数。$0代表脚本名称,$1-9表示参数,例如,第一个参数是 $1,第二个参数是 $2。
$#
传递给脚本或函数的参数个数。
$*
传递给脚本或函数的所有参数。
$@
传递给脚本或函数的所有参数。当被双引号" "
包含时,$@ 与 $* 稍有不同
$?
上个命令的退出状态,或函数的返回值,值为0-正常执行,非0-执行失败
$$
当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。
运算符
1.基本语法
- “$((运算式))”或“$[运算式]”
- expr +,-,\*,/,%(加减乘除取余)
注意:expr运算符间有空格
example
1 |
|
条件判断
1.基本语法
[ condition ] (condition前后有空格)
- 条件非空为true
常用判断
(1)整数比较
=字符串比较
-lt 小于(less than) -le 小于等于(less equal)
-eq 等于(equal) -gt大于(greater than)
-ge大于等于(greater equal) -ne不等于(not equal)
example
1 |
|
(2)按照权限判断
-r 只读(read) -w写入(write)
-x 执行(execute)
example
1 |
|
(3)按文件类型
-f 文件存在且为file -d文件存在且为目录
-e文件存在
(4)多条件判断(&&上一条命令执行成功执行下一条,||上一条执行失败后才执行下一条)
流程控制
if
1.基本语法
1 |
|
或者
1 |
|
- 判读式前后有空格
- if后有空格
case
1.基本语法
1 |
|
case结尾必须为in,每个case判断以有括号”)”结束
for
1.基本语法1
1 |
|
example
从1累加到100
1 |
|
2.基本语法2
for each
1 |
|
example
从1累加到100
1 |
|
read
1.基本语法
read(选项)(参数)
选项:
-p:指定读取值时的提示符
-t:指定读取值时等待的时间
参数
变量:指定读取值的变量名
example
1 |
|
函数
系统函数
basename
语法:basename[string/pathname] [suffix]
(描述:basename命令会删掉最后一个/之前的所有前缀包括”/“字符并将剩下的字符串print)
选项:
suffix为后缀,如果被指定,basename回家pathname或string中的suffix去掉
dirname
语法:dirname 绝对路径
(描述:从给定绝对路径的文件名中去除文件名并保留下路径信息)
自定义
[ function ] funname[()]
{
action;
[return int;]
}
funname
- shell是脚本语言,调用函数前必须先声明
- 函数返回值只能通过$?获取,加return返回,不叫将以最后一条命令结果作为返回值
example
两数和
1 |
|
cut
cut的作用”剪”,负责在文件或输出中截切字段、字符输出
1.基本语法
cut [选项参数] filename
默认分隔符是制表符
参数
- -f 列号,提取指定序列
- -d 分隔符,按指定分隔符分割列
sed
sed是一种流编辑器,一次处理一行内容,处理时,把当前处理行进行临时缓存,称为模式空间,接着sed命令处理缓存区内容,处理完成输出,不对文件内容改变
1.基本语法
sed [选项参数] ‘command’ filename
参数
- -e 直接在指令列模式进行动作编辑
命令功能描述
- a 新增,a后面接字符,在下一行出现
- d 删除
- s 查找并替换
g表示全局
awk
文本分析工具,把文件逐行读入,以空格为默认分隔符将每行切片,切开部分再进行分析处理
1.基本语法
awk [选项参数] ‘patterm1{action1} pattern2{action2}…’
pattern:awk查找的内容,匹配模式
关键字
BEGIN开头
END结尾
action:执行命令
参数
-F指定分隔符
-v 赋值一个用户定义变量
example
1 |
|
内置变量
FILENAME 文件名
NR 已读记录数
NF 浏览记录的域的个数(切割后列的个数)
sort
进行排序并将结果输出
1.基本语法
sort(选项)(参数)
-n 按数值大小排序
-r 按相反顺序排序
-t 设置排序时的分隔符
-k 指定需要排序的列
example
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!