1、新建shell——多行命令执行:在/home/work/study-shell目录下新建helloworld.txt 文件,并且向其添加内容:
2、shell系统变量:
3、自定义变量
注意:环境变量建议大写。
4、默认的值都是字符串类型,是无法进行计算的:
5、若有空格,请添加单\双引号:
6、变量提升为全局变量,在哪里都可以使用:
7、特殊变量:$n $# $* $@ $?
7.1、$n —— $0: 脚本名称 ——$1~$9代表1到9这9个参数的值
编写脚本:
7.2、&# 代表获取输入参数的个数,常用于循环:
7.3、&* $@ 代表 命令行所有参数
7.4、&? 代表上一次执行的命令是否成功
注意:上一次执行正确输出0,否则输出非0数字;
8、运算符
$[运算式]
$((运算式))
expr 运算式 注意:运算符之间必须有空格
9、条件判断
[ condition ] 注意 condition前后都必须有空格
[ zs ] 非空为true 否则为false
= -eq
> -gt
>= -ge
< -lt
<= -le
!= -ne
-r (read)
-w (write)
-x (可执行)
-f (存在且是一个文件格式)
-e (存在)
-d (存在且是一个目录格式)
&&前一个条件为true才会执行下一个条件判断
||前一个条件为false才会执行下一个条件判断
10、if
if [ condition ];then
程序
fi
11、case
case $变量名 in:
"值1")
...
;;
"值2")
...
;;
*)
...
;;
esac
12、for
for((初始值;循环条件;变量变化))
do
...
done
for 变量 in 值1 值2 值3 值4 ...
do
...
done
13、while
while [ condition ]
do
...
done
14、Read读取控制台输入
read(选项)(参数)
选项 -p 指定指令读取时的提示符
参数 -t 指定读取值时的等待时间(单位:s)
15、系统函数
[function] function[()]
{
Action;
[return int;]
}
function
函数返回值只能通过$?系统变量获得,
如果没有return,则最后一条命令运行结果作为最后的返回值。
计算两个入参的和:
16、cut在文件中负责剪切数据
cut [选项参数] filename
选项参数:
-f 列号,提取第几列
-d 分隔符,默认制表符
切割 guan
选取PATH第二个:开始后的所有路径
切割ifconfig后,打印IP地址
17、sed流编辑器
它一次处理一行内容,处理时,把当前处理的行数据存储在临时缓冲区,称为模式空间,接着用sed命令处理缓冲区的内容,处理后,把缓冲区的内容发送到屏幕,接着处理下一行数据。这样不断重复,直到文件末尾,文件内容并没有改变,除非你重定向输出。
sed [选项参数] 'command' filename
选项参数:
-e 多命令
a 新增
d 删除
s 替换
将"mei nv"添加到para.sh第二行下,打印
删除para.sh文件中所有包含wo的行
将wo替换为ni
将para.sh文件中第二行删除,并将wo替换为ni
18、awk强大的文本分析工具
awk [选项参数] 'pattern{action1} pattern{action2} pattern{action3} pattern{action4}' filename
选项参数
-F 指定输入文件的分隔符
-v 赋值一个用户定义变量
查找para.sh 文件以root开头的所有行,并且输出该行的第一列
查找para.sh 文件以root开头的所有行,并且输出该行的第1和2列
显示para.sh 文件第1和2列,且在所有行的前面添加列 user.shell 在最后一行添加 hello,world
para.sh文件中,用户id增加数值1并输出
内置变量
FILENAME 文件名
NR 已读记录数
NF 切割后的 列的个数
统计para.sh文件名,每行 行号 行数
切割IP
查空行所在的行号
19、sort
sort(选项参数)(参数)
选项参数
-n 依照数值大小排序
-r 以相反的顺序排序
-t 设置排序时用到的分隔符
-k 指定需要排序的列