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

shell 脚本编程要点

2015-07-26 16:49 387 查看
1、shell中的特殊字符
#      注释
;       命令分割符,可以将多个语句放在一行执行
''      单引号,在单引号总无法引用变量
""     双引号,类似'',但支持变量替换
··       tab键上方那个,用于引用命令的执行结果

2、变量

变量定义:declare varName

变量赋值: varName=值

变量值引用: $varName

导出变量: export varName[=value]

撤销变量: unset varName

特殊变量:

    $?:     返回上一条命令的状态返回值
    $1,$2... $9:    位置变量,第10个变量需要这样引用
 ${10}
    $#:     脚本传入的所有参数个数
    $*,$@:    返回脚本传入的所有参数

1. $# 传递到脚本的参数个数

2. $* 以一个单字符串显示所有向脚本传递的参数变量。与位置变量不同,此选项参数可超过9个

3. $$ 脚本运行的当前进程ID号

4. $! 后台运行的最后一个进程的进程ID号

5. $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数

6. $- 显示shell使用的当前选项,与set命令功能相同

7. $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误

8. $()里面放命令,可以在脚本中执行该命令,并返回命令执行的输出.

3、条件测试

使用格式:
    test EXPR
    [ EXPR ]
    [[ EXPR ]]

4、输入输出和重定向

标准输入:   0 默认设备为键盘
标准输出:    1 默认设备为显示器
标准错误输出:   2 默认设备为显示器
>:             覆盖输出 
&>:       错误覆盖输出
>> :         追加输出 
&>>:    错误覆盖输出
&>:        合并重定向
<:           
4000
输入重定向
<<:        此处文档
tee:       分流,将结果输出到屏幕并重定向

6、常用语法结构

条件判断
语法格式
示例
单分支if语句
if 语句1;then
语句1执行结果为真则执行
else
语句1执行结果为假则执行
fi
 
1
2
3
4
5
6
7
8
#!/bin/bash

a=1

b=1

if
 
[
$a -
eq
 
$b ];
then

echo
 
"yes"

else

echo
 
"no"

fi


多分支if语句
if 语句1;then
语句1执行结果为真则执行
elif 语句2;then
语句2执行结果为真则执行
...
else
所有条件都不满足时执行
fi
 
1
2
3
4
5
6
7
8
9
10
#!/bin/bash

a=1

b=2

if
 
[
$a -gt $b ];
then

echo
 
"a>b"

elif
 
[
$a -lt $b ];
then

echo
 
"a<b"

else

echo
 
"a=b"

fi


循环结构
for varName in LIST;do
循环体
done
1
2
3
4
#!/bin/bash

for
 
in
{1..10};
do

echo
$i

done


for ((var=#;测试条件;修正条件));do
循环体
done
1
2
3
4
#!/bin/bash

for
 
((i=1;i<=10;i++));
do

echo
$i

done


while 条件语句;do #条件为真时进入循环
循环体
done
1
2
3
4
5
#!/bin/bash

while
 
who
|
grep
“^gentoo”;
do

echo
“gentoo
is not login”

sleep
 
3

done


until 条件语句;do
循环体
done
1
2
3
4
5
#!/bin/bash

while
 
who
|
grep
 
“^gentoo”;
do

echo
“gentoo
is not login”

sleep
 
3

done


条件选择
case $varName in
exp1)
语句体1 ;;
exp2)
语句体 2 ;;
...
*)
语句体 n ;;
1
2
3
4
5
6
7
8
9
10
#!/bin/bash

tmp=y

case
$tmp
in

y|
yes
)

echo
yes
 
;;

n|no)

echo
no
;;

*)

echo
“unknown”

esac


7、一些讲解
http://www.cnblogs.com/jiqing9006/p/3253232.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell编程