1.系统变量
$SHELL $USER $HOME $PWD
2.自定义变量
A=2(赋值符号前后不能有空格) 通过echo $A进行使用。
定义全局变量 : export A=2
3.特殊变量:
$n
n为数字,$0代表该脚本名称,$1~$9代表第一到第九个参数,十以上的参数需要使用大括号包含,如${10}。
$#
获取所有输入参数个数,常用于循环,如:./a.sh cls xs a 则$#为3。
$*
这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体。
$@
这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待。
$?
这个变量表示最后一次执行的命令返回的状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确了。
4.运算符
基本语法为:$(())运算式,或$[运算式]或expr +,-,\*,/,%,注意expr运算符间要有空格
计算(2+3)*4的三种方式:
5.条件判断
(1)两个证书之间的比较
= 字符串比较 -lt 小于(less than) -le 小于等于(less equal) -eq 等于(equal)
-gt 大于(greater than) -ge 大于等于(greater equal) -ne 不等于(not equal)
(2)按照文件权限进行判断
-r 有读的权限(read) -w 有写的权限(write) -x 有执行的权限(execute)
(3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件(file)
-e 文件存在(existence)
-d 文件存在并是一个目录(directory)
(4)多条件判断
(&&表示前一命令执行成功时,才执行后一条命令,||表示上一条命令执行失败后,才执行下一条命令。)
6.if判断(流程控制)
语法:
if [ 条件判断式 ];then
程序
fi
或者:
if [ 条件判断式 ]
then
程序
fi
注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格。(2)if后要有空格。
7.case语句
语法:
case $变量名 in
“值1”)
如果变量的值等于值1,则执行程序1
;;
‘’值2‘)
如果变量的值等于2,则执行程序2
;;
...
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
注意事项:case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。
8.for循环
语法1:
for ((初始值;循环控制条件;变量变化))
do
程序
done
语法2:
for 变量 in 值1 值2 值3 ...
do
程序
done
9.while循环
语法:
while [ 条件判断式 ]
do
程序
done
10.read读取控制台输入
语法:read(选项)(参数)
选项:-p:指定读取值时的提示符;-t:指定读取值时等待的时间(秒)。
参数:变量:指定读取值的变量名
11.函数
11.1系统函数
basename函数,语法:basename [string/oathname] [suffix] 功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。
选项:suffix为后缀,如果suffix被指定了,basename会将path那么或string中的suffix去掉。
dirname函数,文件绝对路径 功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录部分),然后返回剩下的路径(目录部分)。
11.2自定义函数
语法:
[ function ] funname[()]
{
action
[return int;]
}
funname
总结:(1)必须在调用函数之前先声明函数,shell脚本是逐行运行。不会像其他语言一样先编译。
(2)函数返回值,只能通过$?系统变量获得,可以显示加,如果不加,将以最后一条命令运行结果作为返回值。return后跟数值n(0-255)。
12.shell工具
12.1 cut
cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。
语法:cut [ 选项参数 ] filename
选项参数:-f 列号,提取第几列。
-d分隔符,按照指定分隔符分割列。
12.2 sed
sed 是一种流编辑器,它一次处理一行内容 。处理时,把当前处理的航存储在临时缓冲区中,成为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,知道文件末尾。文件内容并没有改变,除非你是用重定向存储输出。
语法:sed [选项参数] ‘command’ filename
选项参数:-e 功能:直接在指令列模式上进行sed的动作编辑,适用于多个命令。
命令功能描述:a 新增,a的后面可以接字符,在下一行出现
d 删除
s 查找并替换
12.2.1 在第二行后添加文字:
12.2.2 删除第三行
12.2.3 替换某个单词
12.2.4 先增加数据,在替换(两个命令)
12.3 awk
语法:awk [选项参数] “pattern1{action} pattern2{action2}...” filename
pattern:表示awk在数据中查找的内容,就是匹配模式
action:在找到匹配内容时所执行的一系列命令。
选项参数:-F 指定输入文件折分隔符
-v 赋值一个用户定义变量
12.3.1查找以root开头的第一列,并打印出第七列
awk -F : '/^root/ {print $7}' passwd
12.3.2查找出以root开头的所有列,并打印出第一列和第七列
awk -F : '/^root/ {print $1","$7}' passwd
12.3.3查找出第一列和第七列,在开头添加user,shell在末尾添加ribenren,sha