2016/10/13
Linux shell编程
1、shell本身是c语言编写的程序;是用户与Linux操作系统沟通的桥梁;
2、Linux shell种类:
(1)Bourne shell(/usr/bin/sh或者/bin/sh);
(2)Bourne Again Shell(/bin/bash);
(3)C Shell(/usr/bin/csh);
(4)K shell(/usr/bin/ksh);
(5)shell for root(/sbin/sh);
3、shell脚本格式:
#!/bin/sh // #!告诉系统其后路径指定程序既是解释此脚本文件的shell程序;
#comments //#开头表示注释
Your commands go here
脚本文件其后缀为sh表明是一个bash脚本文件;执行脚本的时候,先将脚本文件的属性改为可执行;
chmod +x filename.sh //修改属性
./filename.sh //执行
4、变量(变量赋值时不要留空格)
(1)本地变量:作用域为整个bash进程可以使用;
(2)环境变量:一般指在操作系统中用来指定操作系统运行环境的一些参数,作用域为当前shell进程及其子进程,不会影响父进程;
设置环境变量的方法:
1)etho:显示指定环境变量;
2)export:设置新的环境变量;
3)env:显示所有环境变量;
4)set:显示所有本地定义的shell变量;
5)unset:清除环境变量;
(3)局部变量:作用域为当前代码段;
(4)位置变量:$1,$2,....
(5)特殊变量(内置):
$?:上一个命令执行状态的返回值;
$#:获取当前shell命令行中参数的总个数;
$*:获取当前shell的所有参数;
$@:程序的所有参数“$1”“$2”“$3”“...”,不受IFS控制;
$0:获取当前执行的shell脚本的文件名;
$n:获取当前执行的shell脚本的第n个参数值,n=1..9;
$$:获取当前shell的进程号;
$!:执行上一个指令的PID;
5、shell流程控制
(1)分支结构:test命令
test expression 或者 [ expression ](必须留有空格)
(2)if语句:
1)方式1:if结构
if [ expression ]
then [EXPRESSION]
fi
2)方式2:if/else结构
if [ expression ]
then [EXPRESSION]
else [EXPRESSION]
fi
3)方式3:if/elif/else结构
if [ expression ]
then [EXPRESSION]
elif then [EXPRESSION]
elif then [EXPRESSION]
...
else then [EXPRESSION]
fi
(3)case语句
case word in
condition1) [EXPRESSION]
;;
condition2) [EXPRESSION]
;;
...
*) [EXPRESSION]
;;
esac
(4)循环结构
1)for循环
for NAME in [ LIST ];
do [expression];
done
2)while语句和until语句
//while
while CONTROL-COMMAND;
do [EXPRESSIONS]
done
//until
until TEST-COMMAND;
do [EXPRESSIONS]
done
注:break:在正常结束之前退出当前循环;
continue:不执行本次循环,直接跳到下次循环;
exit:终止脚本程序并返回值。
6、shell函数
(1)函数声明:
//方法一
function FUNCTION_NAME{
[EXPRESSIONS]
}
//方法二
FUNCTION_NAME (){
[EXPRESSIONS]
}
7、特殊字符
$:变量替换
双引号:除$、倒引号(`)、反斜线(\)保留特殊功能,其他字符均为普通字符;
单引号('):都为普通字符
倒引号(`):由倒引号括起来的字符串被shell解释为命令行,在执行时,shell会先执行该命令,并以它的标准输出结果取代整个倒引号部分;