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权限
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权限
相关文章推荐
- linux shell编程
- linux shell编程
- Linux shell编程
- Linux Shell编程入门
- Linux Shell编程
- linux shell编程
- Linux Shell编程
- Linux shell编程
- Linux Shell编程入门 (3)
- linux shell编程
- Linux shell编程
- linux shell编程
- linux shell编程入门到精通
- Linux Shell编程
- linux shell编程
- linux shell编程
- linux shell编程
- Linux shell编程——if条件判断
- Linux shell编程——if条件判断
- Linux Shell编程入门