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变量。
*:匹配0个或者多个字符的串
?:匹配单个字符
[]:匹配字符范围或者列表
| : 管道命令,左边的输出作为右边的输入
# : 传递命令Shell的命令序号-:在shell启动或使用set命令是提供选项
?:上一条命令执行后返回值两个美元符:shell的进程号 ! :上一个进程的进程号
@:所有参数,每个都是用双引号引起 * : 所有参数,用一个双引号引起的整体
n:位置参数值,n表示位置 0 :当前的shell名
$ : 引用某个变量
# :注释符号
& : 后台命令
&& :与
|| : 或
!:非
;:在一个命令行中依次执行各个命令
“…”:普通字符串
双 ` : 命令替代
~ : 主目录
. : 执行命令
..:上级目录
[]:内置表达式,计算算是表达式的值,相当于test
{}:用于封装函数
\:表示转移字符
1、无需定义,可直接使用
2、shell大小写敏感
3、$为保留字符,变量被其他变量引用时前面加美元符
4、变量赋值等号前后不能加空格
5、赋值语句右边没有信息,为一个空字符串。
6、Shell只有两种变量类型,整型数字和字符串
7、如果一个变量含有空格、制表位、换行符,用双引号引起不然报错
8、字符串左右应该加双引号
9、Shell内置9个位置变量1-9
1、使用双引号引用变量
2、使用大括号引用变量
3、直接引用
user=meng
null=
number=12345
var1=$user
read var1 var2
变量,−字符串非空,返回变量,否则字符串 {变量,+字符串}非空,返回字符串,否则空值
变量,=字符串非空,返回变量,否则字符串,同时变量被赋值为字符串 {变量,?字符串}非空,返回变量值,否则返回报错。
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 测试条件1
then命令或命令表
elif测试条件2
then命令或命令表
else命令或命令表
fi
以;;两个分隔号进行结束。
case word in
pattern 1) 命令表1;;
pattern 2) 命令表2;;
…
*) 缺省命令表;;
esac
while 测试条件
do
命令表
done
untill 测试条件
do
命令表
done
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