shell程序设计
shell特殊字符-引号
◦1.双引号 由双引号括起来的字符(除$、倒引号(`)和反斜线(\)外) 均作为普通字符对待。
◦2.单引号 由单引号括起来的字符全都作为普通字符出现
◦3.倒引号 倒引号括起来的字符串被shell解释为命令行,在执行时,shell 会先执行该命令行,并以它的标准输出结果取代整个倒引号部 分。 倒引号还可以嵌套使用。但应注意,嵌套使用时内层的倒引号 必须用反斜线(\)将其转义。
‘’别名
alias 起别名
unalias 取消别名
shell特殊字符-通配符
◦1.一般通配符
:1*(星号),它匹配任意字符的0次或多次出现,f*可以匹配 f,fa,f1,fa2,ffa.s
2?(问号),它匹配任意一个字符,f?可以匹配f1,fa,fb,不能匹配 fabc,f12
3[ ](一对方括号),其中有一个字符组。其作用是匹配该字符 组所限定的任何一个字符. f[abcd]可以匹配fa,fb,fc,fd,不能匹配 f1,fa1,fab等,也可写作f[a-d].
4 !(惊叹号),如果它紧跟在一对方括号的左方括号([)之后, 则表示不在一对方括号中所列出的字符f[!1-9].c表示以f开头, 后面一个字符不是数字1-9的.c文件名。
shell特殊字符-注释、管道线 和后台命令
◦1.注释 #!/bin/bash
2.管道线 ls-l $HOME | wc–l
3.后台命令 $ gcc m1.c&
shell特殊字符-输入/输出重 定向符
◦ 自动打开三个标准文件,即标准输入文件(stdin),标准输出文件(stdout)和标准错误输出文件(stderr)。
◦1.输入重定向符 一般形式是:命令 < 文件名 如:$ score < file1
◦2.输出重定向符 一般形式是:命令 > 文件名 如:$ who > abc
◦3.输出附加定向符 一般形式是:命令>>文件名 如:$ ps-l >> psfile
输入/输出命令 ◦
1.read命令
2. echo命令
环境变量 ◦1.常用的环境变量
HOME:用户主目录的全路径名
LOGNAME:即你的注册名,由Linux自动设置
MAIL: 你的系统信箱的路径
PATH: shell从中查找命令的目录列表。可以设置它, 如:PATH=P A T H : PATH:PATH:HOME/bin PS1:shell的主提示符。 bash默认的主提示符一般为“\s-\v$ ”。其中,\s表示shell的名称; \v表示bash的版本号 PS1="Enter Command> "
PWD:你当前工作目录的路径
SHELL:你当前使用的shell
TERM: 你的终端类型
.删除环境变量 $ unset NAME
.export语句 利用export命令将这些变量输出,使它们成为公用量 set命令 ⑴ 显示迄今为止所定义的全部变量,包括局部量和公用量;
⑵ 用来设定位置参数的值;
⑶ 改变执行shell脚本时的选项设定,可以使用户改变shell的功能。
◦bash中算术运算的使用
控制结构-if语句
if 测试条件
then 命令1
elif 命令2
then 命令3
else 命令4
fi
有关文件方面的测试
-e filename 如果 filename存在,则为真
-L filename 如果 filename为符号链接,则为真
-r 文件名 若文件存在并且是用户可读的,则测试条件为真
-w 文件名 若文件存在并且是用户可写的,则测试条件为真
-x 文件名 若文件存在并且是用户可执行的,则测试条件为真
-f 文件名 若文件存在并且是普通文件,则测试条件为真
-d 文件名 若文件存在并且是目录文件,则测试条件为真
有关数值方面的测试
n1 -eq n2 如果整数n1等于n2,则测试条件为真
n1 -ne n2 如果整数n1不等于n2,则测试条件为真
n1 -lt n2 如果n1小于n2,则测试条件为真
n1 -le n2 如果n1小于或等于n2,则测试条件为真
n1 -gt n2 如果n1大于n2,则测试条件为真
n1 -ge n2 如果n1大于或等于n2,则测试条件为真
逻辑运算符
! 逻辑非( NOT
-a 逻辑与( AND )
-o 逻辑或( OR )
控制结构-case语句
在使用case语句时应注意: ⑴ 每个模式字符串后面可有一条或多条命令,其最后一条命令必须以两 个分号(即;;)结束。
case $1 in
-b) count=grep^b $2|wc -l
echo “The number of lines in $2 that start with b is $count.”;;
-s) count=grep^s $2|wc -l
echo “The number of lines in $2 that start with s is $count.”;;
*) echo “That option is not recognized”;;
esac
控制结构-while语句
while [ $1 ] do if [ -f $1 ] then echo “display: $1” cat $1 else echo “$1 is not a file name.” fi shift done
控制结构-until语句
它与while语句很相似,只是测试条件不同:当测试条件为假时,才进入循 环体,直至测试条件为真时终止循环。
until [ “$2”= “ ” ] do cp $1 $2 shift 2 done if [ “$1”!=“ ” ] then echo “bad argument!”
控制结构-for语句
其使用方式主要有两种: 一种是值表方式 另一种是算术表达式方式
1.值表方式
for 变量 [ in 值表 ];do 命令表;done
例:
for day in Monday Wednesday Friday Sunday
do
echo $day
done
2.算术表达式方式
for ((e1;e2;e3))
do
命令表
done
break continue exit
作业控制
jobs,kill,bg,fg和wait
jobs命令 不带参数时,可列出当前尚未完成的作业。
例如:
$ jobs
[2] +Done who|wc-cd
[1] -Stopped(SIGTTOU) man ls&
bg命令可以把前台作业切换成后台作业
fg命令可以把后台作业切换成前台作业