shell脚本总结
Shell语言的总结
Shell变量
1.用户自定义 :标示符
从右向左赋值
引用变量 $
清除变量 $unset Z
例如 $count= 1
$echo$HOME
2.命令行参数变量
$0 与键入行的命令行一样,包含脚本文件名
$1 第一个参数
$2
$3
3.位置变量
$@ 包含所含命令行参数 “$1 $2 $3 $4 $5 $6 $7$8¥9”
$* 所包含命令行的参数 “$1 $2 $3 $4 $5 $6 $7$8¥9”
$# 包含命令行参的个数
$? 包含前一个命令的退出状态
$$ 包含正在执行进程的号
4.环境变量:env
$PATH shell的搜索路径
$HOME /etc/passwd文件中列出的用户目录
$IFS 默认为空格 tab及换行符
$TERM 终端类型 常用的有vt100,ansi,vt200.xterm
二
Shell语句
1.说明性语句 #xxxxxxx
2.功能性语句 read(从标准输入读入一行)
Expr(算术运算命令)
Test(文件属性 字符串 整数)
1.test $name -eq $1
echo $?
2if test -f $filename
then
……
Fi
3if [ -f $filename ]
then
……
fi
4.整数测试
a -eq b 测试a 与b 是否相等
a -ne b测试a 与b 是否不相等
a -gt b 测试a 是否大于b
a -ge b 测试a 是否大于等于b
a -lt b 测试a 是否小于b
a -le b 测试a 是否小于等于b\
5.文件测试
-d name 测试name 是否为一个目录
-f name 测试name 是否为普通文件
-L name测试name 是否为符号链接
-r name 测试name 文件是否存在且为可读
-w name 测试name 文件是否存在且为可写
-x name 测试name 文件是否存在且为可执行
-s name 测试name 文件是否存在且其长度不为0
f1 -nt f2 测试文件f1 是否比文件f2 更新
f1 -ot f2 测试文件f1 是否比文件f2 更旧
三.结构性语句
1. If 模式
Then
fi
2.if 表达式
Then
命令表
Else
命令表
Fi
记住 -f检测是否为文件 -d检测是否为目录
4.分之语句
Case 字符串变量 in(case只能检测字符串变量)
常量字符串) //变量名等于 常量字符串则执行命令一
命令表1
;;
常量字符串)
命令表2;;
常量字符串)
命令表3
;;
常量字符串)
命令表4
;;
×) //*表示其他模式
命令5
;;
esac
5循环语句
A)for变量名 in 变量列表
Do
命令表
Done
变量依次取单词表中的各个单词, 每取一次单词, 就执行一次循环体中的命令. 循环次数由单词表中的单词数确定. 命令表中的命令可以是一条, 也可以是由分号或换行符分开的多条。如果单词表是命令行上的所有位置参数时, 可以在for语句中省略 “in 单词表” 部分。直到变量名把变量列表中的所有变量都取到了 循环体才会结束
6while 表达式
Do
命令表 // 表达式为真 执行命令表
Done
while语句首先测试其后的命令或表达式的值,如果为真,就执行一次循环体中的命令,然后再测试该命令或表达式的值,执行循环体,直到该命令或表达式为假时退出循环。
while语句的退出状态为命令表中被执行的最后一条命令的退出状态。
7.until 表达式
Do
命令表 //表达式为假 直到表达式为真则 退出循环
Done
until循环与while循环的功能相似, 所不同的是只有当测试的命令或表达式的值是假时, 才执行循环体中的命令表, 否则退出循环. 这一点与while命令正好相反
8break and continue
配合循环语句 混合使用
break n 则跳出n层;
continue语句则马上转到最近一层循环语句的下一轮循环上,
continue n则转到最近n层循环语句的下一轮循环上
Shell函数
shell 函数
1.函数定义方式
function_name()
{
命令列表//发挥空间
}
function function_name() //这种不常用
{
命令列表//发挥空间
}
2.函数的参数传递
function_name 12 $value ..
12:函数体内引用12 ,用 $1 表示
value:函数体内引用 value ,用 $2 表示
3.函数返回值调用
代表函数的返回状态 :$?
1)有 return 的函数 $? 表示 return 的值
2)没有 return 的函数,$? 函数体内最后一条指令的返回状态
4.函数输出内容引用
通过反单撇号来引用函数输出,一般为字符串
count=`function_name $value`
5.函数的返回值
Fun $value
Echo $?
Shell变量的作用域
1.局部变量 作用于函数体内
关键字 local
2.全局变量 作用于脚本内部任何地
初始化以后的该变量的内容 否则为空
Count= 5
3.独立于脚本文件外的
关键字 export