#linux 注意点
1.变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样
2.推荐给所有变量加上花括号{}
3.使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变。
4.使用 unset 命令可以删除变量
5.
$0
当前脚本的文件名
$n
传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1
,第二个参数是$2
。
$#
传递给脚本或函数的参数个数。
$*
传递给脚本或函数的所有参数。
$@
传递给脚本或函数的所有参数。被双引号(" ")
包含时,与 $*
稍有不同,下面将会讲到。
$?
上个命令的退出状态,或函数的返回值。
$$
当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID
6.实现加减运算 expr for example: echo expr 2 + 2
注意:
表达式和运算符之间要有空格
7.算术运算符
+ 加法 expr $a + $b
结果为 30。
- 减法 expr $a - $b
结果为 10。
* 乘法 expr $a \* $b
结果为 200。
/ 除法 expr $b / $a
结果为 2。
% 取余 expr $b % $a
结果为 0。
= 赋值 a=$b 将把变量 b 的值赋给 a。
== 相等。用于比较两个数字,相同则返回 true。
!= 不相等。用于比较两个数字,不相同则返回 true。
8.关系运算符列表 注意:关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
-eq 检测两个数是否相等,相等返回 true。
-ne 检测两个数是否相等,不相等返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true。
-lt 检测左边的数是否小于右边的,如果是,则返回 true。
-ge 检测左边的数是否大等于右边的,如果是,则返回 true。
-le 检测左边的数是否小于等于右边的,如果是,则返回 true。
9.布尔运算符
! 非运算,表达式为 true 则返回 false,否则返回 true。
-o 或运算,有一个表达式为 true 则返回 true。
-a 与运算,两个表达式都为 true 才返回 true。
10.字符串运算符
= 检测两个字符串是否相等,相等返回 true。
!= 检测两个字符串是否相等,不相等返回 true。
-z 检测字符串长度是否为0,为0返回 true。
-n 检测字符串长度是否为0,不为0返回 true。
str 检测字符串是否为空,不为空返回 true。
11.字符串操作(长度、读取、替换)
${#string}
$string
的长度
${string:position}
在$string
中, 从位置$position
开始提取子串
${string:position:length}
在$string
中, 从位置$position
开始提取长度为$length
的子串
${string#substring}
从变量$string
的开头, 删除最短匹配$substring
的子串
${string##substring}
从变量$string
的开头, 删除最长匹配$substring
的子串
${string%substring}
从变量$string
的结尾, 删除最短匹配$substring
的子串
${string%%substring}
从变量$string
的结尾, 删除最长匹配$substring
的子串
${string/substring/replacement}
使用$replacement
, 来代替第一个匹配的$substring
${string//substring/replacement}
使用$replacement
, 代替所有匹配的$substring
${string/#substring/replacement}
如果$string
的前缀匹配$substring
, 那么就用$replacement
来代替匹配到的$substring
${string/%substring/replacement}
如果$string
的后缀匹配$substring
, 那么就用$replacement
来代替匹配到的$substring
12.lsmod :查看加载的模块 /lib/modules/
(uname−r)/kernel/模块名称(Module);模块的大小(size);此模块是否被其他模块所使用(Usedby)modinfo:查看模块的详细信息modprobe:加载模块modprobe会主动的去搜寻modules.dep的内容,先克服了模块的相依性后,才决定需要加载的模块有哪些,很方便depmod可检测模块的相依性,供modprobe在安装模块时使用linuxawk:awk[−F|−f|−v]‘BEGIN//command1;command2END′file[−F|−f|−v]大参数,−F指定分隔符,−f调用脚本,−v定义变量var=value′′引用代码块BEGIN初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符//匹配代码块,可以是字符串或正则表达式命令代码块,包含一条或多条命令;多条命令使用分号分隔END结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息特殊要点:
0 表示整个当前行
$1 每行第一个字段
NF 字段数量变量
NR 每行的记录号,多文件记录递增
FNR 与NR类似,不过多文件记录不递增,每个文件都从1开始
\t 制表符
\n 换行符
FS BEGIN时定义分隔符
RS 输入的记录分隔符, 默认为换行符(即文本是按一行一行输入)
~ 匹配,与==相比不是精确比较
!~ 不匹配,不精确比较
== 等于,必须全部相等,精确比较
!= 不等于,精确比较
&& 逻辑与
|| 逻辑或
+ 匹配时表示1个或1个以上
/[0-9][0-9]+/ 两个或两个以上数字
/[0-9][0-9]*/ 一个或一个以上数字
FILENAME 文件名
OFS 输出字段分隔符, 默认也是空格,可以改为制表符等
ORS 输出的记录分隔符,默认为换行符,即处理结果也是一行一行输出到屏幕
-F’[:#/]’ 定义三个分隔符。