您的位置:首页 > 运维架构 > Shell

Linux Shell编程

2014-02-05 15:52 225 查看
Shell编程

shell结构

1.#!指定执行脚本的shell

2.#注释行

3.命令和控制结构

创建shell程序的步骤:

第一步:创建一个包含命令和控制结构的文件。

第二步:修改这个文件的权限使它可以执行。

使用chmod u+x

第三步:执行 ./example (也可以使用“sh example”执行)

shell变量

变量: 是shell传递数据的一种方法,用来代表每个取值的符号名。

shell有两类变量:临时变量和永久变量

临时变量是shell程序内部定义的,其使用范围仅限于定义它的程序,对其它程序不可见。包括:用户自定义变量、位置变量。永久变量是环境变量,其值不随shell脚本的执行结束而消失。

用户自定义变量由字母或下划线开头,由字母、数字或下划线序列组成,并且大小写字母意思不同。变量名长度没有限制。

在使用变量值时,要在变量名前加上前缀“$”

设置变量:习惯上用大写字母来命名变量。变量名只能以字母表中的字符开头,不能用数字。

变量赋值:赋值号“=”两边应没有空格。

定义时赋值,如NUM=1

将一根命令的执行结果赋给变量, 如: TIME=‘date’

将一个变量赋给另一个变量, 如: A=$B

使用echo命令查看变量值。例如:echo $A

单引号和双引号的区别:

#$ABC='$NAME Junior'

#echo $ABC

$NAME Junior

单引号之间的内容原封不动指定给了变量。

删除变量:

#unset NAME

位置变量和特殊变量

shell解释执行用户命令时,将命令行的第一个部分作为命令名,其他部分作为参数。由出现在命令行上的位置确定的参数称为位置参数。

案例:

ls -l file1 file2 file3

$0 这个程序的文件名 ls -l

$n z这个程序的第n个参数值, n=1-9

特殊变量

$ 这个程序的所有参数

$# 这个程序的参数个数

$$ 这个程序的PID

$! 执行上一个后台命令的PID

$? 执行上一个命令的返回值

read命令:从键盘读入数据,赋值给变量

案例; read 变量值

sh +x read

expr命令:对整数型变量进行算术运算

案例:expr 3+5

expr $var1 - 5

expr $var1 / $var2

expr $var3 \ 10

expr 'expr 5 + 7' /$var4

var4 = 'expr $var1 / $var2'

变量测试语句

字符串测试

test str1=str2 测试字符串是否相等

test str1!=str2 测试字符串是否不相等

test str1 测试字符串是否不为空

test -n str1 测试字符串是否不为空

test -z str1 测试字符串是否为空

文件测试:

test -d file 指定文件是否目录

test -f file 指定文件是否常规文件

test -x file 指定文件是否可执行

test -r file 指定文件是否可读

test -w file 指定文件是否可写

test -a file 指定文件是否存在

test -s file 文件大小是否非0

if test -d $1 then

fi

变量测试语句可用[]进行简化 ,如:

test -d $1 等价于 [-d $1]

if 条件1 then

命令1

elif 条件2 then

命令2

else

命令3

fi

多条件的联合:

-a : 逻辑与

-o : 逻辑或

exit语句:退出程序执行,并返回一个返回码,返回码为0,表示正常退出,非0表示非正常退出。

for ... done语句

格式:for 变量 in 名字表

do

命令列表

done

awk命令

awk -F 域分隔符'命令'

示例:

1.检测系统中UID为0的用户

awk -F: '$3==0{print $0}' /etc/passwd

2.检测系统中密码为空的用户

awk -F: 'length($2)==0 {print $1}' /etc/shadow

select 变量 in 关键字

do

command1

commandn

done

select把关键字中的每一项做成类似表单,以交互的方式执行do和done之间的命令。

case...esac语句,格式:

case 变量 in

字符串1) 命令列表1;;

字符串n) 命令列表n;;

esac

while 语句,格式

while 条件

do

命令

done

until语句,格式

until 条件(条件为假)

do

命令

done

break:跳出整个循环

continue:跳过本次循环,进行下一次循环

shift指令:参数左移,每执行一次,参数序列顺次左移一个位置,$#的值减1,

用于分别处理每个参数,移出去的参数不再可用。

函数的定义

函数名()

{

命令序列

}

函数的调用:不带()

参数名 参数1 参数2

Shell 脚本调试

sh -x script

这将执行该脚本并显示所有变量的值。

sh -n script

不执行脚本只是检查语法的模式,将返回所有语法错误。

1.对脚本有r权限或者rx权限

2.对脚本所在目录有rx权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: