Shell编程

简介:

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启动或使用set命令是提供选项
?:shell  ! :上一个进程的进程号
@  * : 所有参数,用一个双引号引起的整体
nn  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]表示跳出n层,默认是1。
2、continue
使用 : continue [n]表示跳出n层,默认是1。
3、exit

数组

数组操作的取值的一般方式:
${数组名[下标值]}
对应的赋值的一般方式:
1、数组名[下标值]=值
2、数组名={value1,value2,value3……}

函数

function 函数名()
{
语句
}

参数传递方法:
1、变量直接传递:已经有的变量
2、位置参数法:如show是一个函数 show $a

你可能感兴趣的:(编程,shell,脚本)