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

Shell编程

2016-04-30 15:36 399 查看

简介:

Shell 是一种交互式编程接口,也是一种命令解释语言,还是一种命令语言解释器。

shell有Bourne Shell(简称B)、Korn Shell、C Shell 三种,使用最多的是B Shell。shell脚本头可以使用#!/bin/sh说明脚本使用哪种shell执行。#!表示使用哪一种解释器执行当前文本/bin/sh表示使用B shell解释器。shell的注释是用#开头的,后面接注释文字。

环境变量

shell用户环境变量是每一个用户定义在.profile或者.bash_profile中生效的变量。

环境变量的定义和导出的两种格式

1、name=value;export name

2、name=value

export name

unset命令可以删除环境变量,如unset USERNAME 是删除USERNAME变量。

Shell的符号、变量及运行

*:匹配0个或者多个字符的串

?:匹配单个字符

[]:匹配字符范围或者列表

| : 管道命令,左边的输出作为右边的输入

# : 传递命令Shell的命令序号# : 传递命令Shell的命令序号
-:在shell启动或使用set命令是提供选项

?:上一条命令执行后返回值两个美元符:shell的进程号 ?: 上一条命令执行后返回值
两个美元符: shell的进程号
! :上一个进程的进程号

@:所有参数,每个都是用双引号引起 @:所有参数,每个都是用双引号引起
* : 所有参数,用一个双引号引起的整体

n:位置参数值,n表示位置 n : 位置参数值,n表示位置
0 :当前的shell名

$ : 引用某个变量

# :注释符号

& : 后台命令

&& :与

|| : 或

!:非

;:在一个命令行中依次执行各个命令

“…”:普通字符串

双 ` : 命令替代

~ : 主目录

. : 执行命令

..:上级目录

[]:内置表达式,计算算是表达式的值,相当于test

{}:用于封装函数

\:表示转移字符

Shell变量特点

一、

1、无需定义,可直接使用

2、shell大小写敏感

3、$为保留字符,变量被其他变量引用时前面加美元符

4、变量赋值等号前后不能加空格

5、赋值语句右边没有信息,为一个空字符串。

6、Shell只有两种变量类型,整型数字和字符串

7、如果一个变量含有空格、制表位、换行符,用双引号引起不然报错

8、字符串左右应该加双引号

9、Shell内置9个位置变量1-9

二、引用变量的三种方法

1、使用双引号引用变量

2、使用大括号引用变量

3、直接引用

三、变量赋值

1、直接赋值

user=meng

null=

number=12345

2、变量赋值

var1=$user

3、read读入

read var1 var2

4、参数置换位置方式

变量,−字符串非空,返回变量,否则字符串 {变量,-字符串} 非空,返回变量,否则字符串
{变量,+字符串}非空,返回字符串,否则空值

变量,=字符串非空,返回变量,否则字符串,同时变量被赋值为字符串 {变量,=字符串}非空,返回变量,否则字符串,同时变量被赋值为字符串
{变量,?字符串}非空,返回变量值,否则返回报错。

四、变量移位

shift 让位置参数左移一位。

五、条件测试

使用test命令([]的功能一样)

4种:字符串测试、数值测试、逻辑测试、文件属性测试。

字符串测试

-z s1 长度为0 真

-n s1 长度大于0 真

s1 不是空字符 真

s1 = s2 相等 真

s1 != s2 不相等 真

s1 < s2

s1 > s2

数值测试

n1 -eq n2 相等

n1 -ne n2 不相等

n1 -lt n2 小于

n1 -le n2 小于等于

n1 -gt n2 大于

n1 -ge n2 大于等于

逻辑测试

! 与

-a 或

-o 非

()优先

权限测试:

-r 可读

-w 可写

-x 可执行

-f 是否普通文件

-d 文件是否是目录文件

-p 文件是否命名的FIFO文件

-b 是否文件块

-c 是否是字符输入设备

-s 文件长度是否大于

六、控制结构

if语句

if 测试条件1

then命令或命令表

elif测试条件2

then命令或命令表

else命令或命令表

fi

case语句

以;;两个分隔号进行结束。

case word in

pattern 1) 命令表1;;

pattern 2) 命令表2;;



*) 缺省命令表;;

esac

while语句

while 测试条件

do

命令表

done

until语句

untill 测试条件

do

命令表

done

for语句

for 变量名 in 循环列表

do

命令表

done

跳转语句

1、break

使用 : break
表示跳出n层,默认是1。

2、continue

使用 : continue
表示跳出n层,默认是1。

3、exit

数组

数组操作的取值的一般方式:

${数组名[下标值]}

对应的赋值的一般方式:

1、数组名[下标值]=值

2、数组名={value1,value2,value3……}

函数

function 函数名()

{

语句

}

参数传递方法:

1、变量直接传递:已经有的变量

2、位置参数法:如show是一个函数 show $a
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: