1、参数传递,传入参数:
- $0脚本名字
- $1 - $9 位置参数 #1 - #9
- $#位置参数的个数
- "$@"所有的位置参数
- "$*"所有的位置参数
- $?返回前一个命令的返回值,在执行命令后可以用此参数检查执行结果。
- $$脚本的进程ID(PID)
2、IF
if [ 判断 ]; then
elif [ 判断 ]; then
else
fi
【注】
if与[之间要有空格
[]与判断条件之间也必须有空格
]与;之间不能有空格
字符串比较:
if [ str1 = str2 ];then fi #当两个字符串相同时返回。
if [ str1!=str2 ];then fi #当两个字符串不相等时返回真
if [ -n str1 ];then fi #当字符串的长度大于0时返回真 (判断变量是否有值)
if [ -z str1 ];then fi #当字符串的长度为0时返回真
对数字的判断:
-eq 是否相等
-ne 是否不相等
-gt 是否大于
-ge是否大于等于
-lt是否小于
-le是否小于的等于
逻辑判断
-a 与
-o 或
! 非
对文件属性的判断
-r file #用户可读为真
-w file #用户可写为真
-x file #用户可执行为真
-f file #文件存在且为正规文件为真
-d file #如果是存在目录为真
-c file #文件存在且为字符设备文件
-b file #文件存在且为块设备文件
-s file #文件大小为非0为真,可以判断文件是否为空
-e file #如果文件存在为真
字符串比较语句中,比较时请使用双引号将变量括起来。
3、shell 常用的Linux命令
shell脚本中可以使用任意的unix命令, 常用的shell命令介绍如下:
(1) echo “some text”:
(2)ls: 文件列表
(3)wc –l file, wc -w file, wc -c file: 计算文件行数,计算文件中的单词数,计算文件中的字符数
(4)cp sourcefile destfile: 文件拷贝
(5) mv oldname newname : 重命名文件或移动文件
(6)rm file: 删除文件
(7)grep 'pattern' file: 在文件内搜索字符串比如:grep 'searchstring' file.txt
(8)cat file.txt: 输出文件内容到标准输出设备(屏幕)上
(9)file somefile: 得到文件类型
(10)read var: 提示用户输入,并将输入赋值给变量
(11)sort file.txt: 对file.txt文件中的行进行排序
(12)uniq: 删除文本文件中出现重复的行列: sort file.txt | uniq
(13)expr: 进行整数运算Example: add 2 and 3expr 2 “+” 3
(14)bc: 算术运算,且不截断位数。浮点运算:-l
(15)find: 搜索文件比如:根据文件名搜索find . -name filename
(16)basename file: 返回不包含路径的文件名比如: basename /bin/tux将返回 tux
(17)dirname file: 返回文件所在路径比如:dirname /bin/tux将返回 /bin
(18) head file: 打印文本文件开头几行
(19)cut:字符串处理命令
4、Linux命令tr
tr [–c/d/s/t] [SET1] [SET2]
-t:默认选项,将set1内的字符替换为set2的字符,所替换的字符一一对应。
echo “111222aaadddyuw” | tr “12” “ur“
结果: uuurrraaadddyuw
-d:删除set中所包含的所有字符。
echo “111222aaadddyuw” | tr -d “12”
结果:aaadddyuw
-s:去除重复的字符
echo "111222aaadddyuw" | tr -s [12ad]
结果: 12adyuw
-c:用SET2替换SET1中没有包含的字符
echo "111222aaadddyuw" | tr -c "12u" "i“
结果: 111222iiiiiiiuii
5、Unix命令grep
grep [options] file
-v:显示不包含匹配文本的所有行
-w:完全匹配某个字符串
-i: 不区分大小写
-l:将符合条件的文件名列出
-L:将不匹配条件的文件名列出
-n:显示匹配行及 行号
--color:结果高亮
grep 正则表达式 file
6、快捷操作符
&&:
[ -f "/etc/shadow" ] && echo "This computer uses shadow passwors"
||:
[ -r “$mailfolder” ] || { echo “Can not read $mailfolder” ; exit 1; }
【注】
我们使用花括号以匿名函数的形式将两个命令放到一起作为一个命令使用
7、awk流编辑器
流编辑器
它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,
并在这些行上进行想要的操作。
实例:
1、如何将一列输出成一行?
2、从m3u8文件读取数值,计算片长。
其他资料参考:
http://dongxicheng.org/script/awk-usage/
8、sed
流编辑器
命令格式:
sed ‘范围 操作命令’ 文件
默认范围为全文。范围包含两种格式:
直接用数字表示行号和范围
用正则表达式
使用正则表达式时,必须用//隔开。
sed总是以行对输入进行处理
sed处理的不是原文件而是原文件的拷贝
9、cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的。
其语法格式为:
cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]
使用说明
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。
主要参数
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的<br />范围之内,该字符将被写出;否则,该字符将被排除。
10. execpath=$(dirname $0)可以获取脚本执行路径
basename=$(basename $0)可以获取脚本名称
11.find ./ -size +50k –size -100K
浙公网安备 33010602011771号