shell程序设计

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

linux下的shell

用户使用shell的设定 通过查看/etc/passwd文件可以查看用户使用的shell类型

linux下的shell
通过cat /etc/shells命令查看安装的shell
由于bash是Linux是默认提供的shell解释器,
并且是使用最广泛、与其他shell兼容最好的解释

说明: “列表”为存储了一系列值的 列表,随着循环的进行,变量 从列表中的第一个值依次取到 最后一个值; do和done之间的命令通常为根 据变量进行处理的一系列命令, 这些命令每次循环都执行一次; 如果中括号中的部分省略掉, Bash则认为是“in $@”,即执 行该程序时通过命令行传给程 序的所有参数的列表。
如果字符串string长度不为0则返回真,否 则返回假; 同-n string,如果字符串string长度不为0 返回真,否则返回假。
-n string
string
29
整数间关系判断
常用的整数关系条件判断 mum_1 –eq num_2 如果num_1和num_2相等则返回真,否则返回 假; mum_1 –ne num_2 如果num_1不等于num_2则返回真,否则返回 假; mum_1 –gt num_2 mum_1 –lt num_2 mum_1 –le num_2 如果num_1大于num_2则返回真,否则返回假; 如果num_1小于num_2则返回真,否则返回假; 如果num_1小于等于num_2则返回真,否则返 回假;
函数开始
echo命令输出字符串 读入用户的输入到变量name 输出 函数结束 程序开始的第一条命令,输出提示信息 调用函数 输出提示,提示程序结束
11
12
shell脚本的建立与执行
1、建立 用vi或cat,编辑、保存文件 2、执行 (1)输入重定向的执行方式 #sh < test (2)以脚本名作为shell参数的执行方式 #sh test (3)改为可执行权限后直接执行方式 #chmod +x test #./test
备份当前目录下的所有TXT文件 #!/bin/bash for file in `ls *.txt` do cp ${file} ${file}.bak done
39

说明:
while循环中,只要条件为真,
while循环与until循环
while/until 条件 do 命令 done
#!/bin/bash i=1 sum=0 while [ $i –le 100 ] do sum=$[$sum+$i] 或 sum=`expr $sum + $i ` i=$[$i+1] 或 i= `expr $i + 1 ` done echo $sum
格式:let arg1 [arg2 ......]
argn(n=1,2,…)为表达式 例子:计算(2+3)×4的值 let s=(2+3)*4 说明:
与expr命令相比,let命令更简洁直观
每个表达式内的运算符与操作数之间不必用空格分开。 当运算符中有<、>、&、|等符号时,同样需要用引号(单引号、
常用的扩展用法:
${variable:-value}:variab是一个变量名,value是一个具体的 值,若variable存在,则返回variable的值,否则返回value值。 ${variable:=value}:如果variable存在,则返回variable的值, 否则先将值value赋给变量variable,然后返回value值。 ${variable:+value}:若variable存在,返回value值,否则返回 空值。 ${variable:?value}:若variable存在,则返回variable的值, 否则将value送到标准错误输出显示并退出shell程序。 ${variable:offset[:length]}:从变量variable的第offset+1个字 符开始的长度为length的子串,若括号内的部分省略,则返回 从offset+1个字符后所有子串。
9
第一种
10
第二种
11
第三种
12
三、shell程序设计

一般结构
shell类型 函数 主过程
#!/bin/bash function fun1(){ } ...... funciton funn(){ } ........... . . . . . .
shell类型 函数定义
主过程
1 shell的变量 shell的变量分为: (1)shell的环境变量(用于定制shell的运行 环境,此部分自学) (2)shell的用户自定义变量
器,因此这里介绍基于bash的shell程序。
7
二、第一个shell程序
greeting.sh 1 2 3 4 5 6 7 8 9 10 #!/bin/bash #a Simple shell Script Example #a Function function say_hello() { echo "Enter Your Name,Please. :" read name echo "Hello $name" } echo "Programme Starts Here....." say_hello echo "Programme Ends." 解释:shell脚本以.sh为后缀 以 #! 开始,指明系统需要用哪种shell解 释用户的shell程序。 以 # 开始,其后为程序注释 同上 以 functin 开始,定义函数
27
字符串属性
常用字符串属性条件判断 string_1 = string_2 如果string_1和string_2两个字符串相等则 返回真,否则返回假; 如果string_1和string_2两个字符串不相等 则返回真,否则返回假;
string_1 != string_2
-z string
如果字符串string的长度为0则返回真,否 则返回假;
双引号)或者斜杠来修饰运算符(对运算符进行转义)。
(1)双引号 由双引号扩起来的字符,除$、倒引号和反斜线(\)仍保留其特 殊功能外,其余字符都作为普通字符对待。
3、引号
(2)单引号 由单引号括起来的所有字符或字符串都作为普通字符出现。
(3)倒引号 由倒引号括起来的字符串被shell解释为命令。
23
如果fn存在且fn为符号链接则返回真,否则返回假。
?是一个特殊的变量,存储紧邻的前驱命令的返回值。
26
逻辑运算符 -a(与) 格式为“condition1 –a condition2” -o(或) 格式为“condition1 –o condition2” !(非) 格式为“!condition”

说明:
“条件”可以是变量、表达
式、shell命令等; “模式”为条件的值,并且 一个“模式”可以匹配多种 值,不同值之间用竖线(|) 联结 ; 一个模式要用双分号(;;) 作为结束 ; 以逆序的case命令(esac) 表示case分支语句的结束
37
for循环
for 变量 [in 列表] do 命令(通常用 到循环变量) done
if分支
if 条件1 then 命令1 [elif 条件2 then 命令2 … ] [else 命令n ] fi

说明:
中括号中的部分可省略; 当条件为真(0)时执行
then后面的语句,否则执行 else后面的语句; 以fi作为if结构的结束。
35
case分支
case 条件 in 模式1) 命令1 ;; 模式2) 命令2 ;; ............... 模式n) 命令n ;; esac
mum_1 –ge num_2 如果num_1大于等于num_2则返回真,否则返 回假;
31
5、输入输出
(1)read命令 是标准的输入命令 read 变量1 [变量2]…
(2)echo命令 将其后的参数在标准输出上输出。
32
6、控制结构



控制结构: 根据某个条件的判断结果,改变程序执行的路径。可以简 单的将控制结构分为分支和循环两种 。 常见分支结构: if case 常见循环结构: for while until
expr 3 * 2 expr 3 \* 2
expr 3 „*‟ 2
expr 3 “*” 2 当表达式比较复杂时,
最好把表达式拆成几个简单
的表达式,如:(2+3)*4 s=`expr 2 + 3 ` expr=$s \* 4 或 expr `expr 2 + 3 ` \* 4
21

let命令指明表达式
利用运算符将变量或者常量连接起来就形成了表达式, 由于变量和常量没有特定的数据类型,因此在bash中单纯 地写一个表达式作为一条命令或语句是错误的,必须通过 expr和let命令指明表达式是一个运算式。
简单数学表达式

expr命令计算一个表达式的值 ,并将结果写到标准输出设 备上。 格式 :expr arg 例子:计算(2+3)×4的值 1、分步计算,即先计算2+3,再对其和乘4 s=`expr 2 + 3` expr $s \* 4 2、一步完成计算: expr `expr 2 + 3 ` \* 4 说明: 运算符号和参数之间要有空格分开; 通配符号(*),在作为乘法运算符时要用转义符“\” 或引号(单引号或双引号)。
-e fn
-d fn -r fn -w fn -x fn
如果fn存在则返回真,否则返回假。
如果fn 存在且fn为目录则返回真,否则返回假。 如果fn存在且fn可读则返回真,否则返回假。 如果fn存在且fn可写则返回真,否则返回假。 如果fn存在且fn可执行则返回真,否则返回假。
-O fn
-L fn
如果fn存在且被当前用户拥有则返回真,否则返回假。
shell程序设计
1
主要内容
一、Shell的作用 二、Shell程序的编辑和运行 三、基于Bash的Shell程序设计
1、变量声明 2、表达式 3、条件判断 4、控制结构 5、参数访问
一、Shell的作用


shell是命令解释器,它接收用户输入的命令,进行分析, 创建子进程,由子进程实现命令所规定的功能,等子 进程终止后,发出提示符。 Shell 还可以用来进行程序设计,成为shell脚本,又 叫做shell程序或shell命令文件。
4、条件判断



常见的条件: 变量的值; 文件的执行权限; 命令执行结果; 多种条件的逻辑组合; 判断结果的一般定义: 真:0 假:1 格式: test condition 或[ condition ]注意左,右中括号和判断条件之间要用空 格隔开。
测试文件属性
常用的文件属性条件判断 -f fn -b fn 如果fn存在且fn为普通文件则返回真,否则返回假。 如果fn存在且fn为块设备则返回真,否则返回来自百度文库。
shell
操作系统
图形界面
硬 件
其它用户界面
用户

Shell程序的特点及用途:
shell程序是将shell命令按照控制结构组织到一个文本文
件中,批量的交给shell去执行(和DOS下的批处理程 序.bat文件类似) 不同的shell解释器使用不同的shell命令语法 shell程序解释执行,不生成可以执行的二进制文件 可以帮助用户完成特定的任务,提高使用、维护系统的 效率 了解shell程序可以更好的配置和使用linux
14
用户变量的声明和使用
变量是弱类型的 声明变量不用声明类型 可以存储不同类型的内容 使用灵活 使用时要明确变量的类型 大小写区分 变量声明及赋值格式 格式: 变量=值 (注意:等号两侧不能有空格) 例如: a=”hello ” b=9
变量的引用 格式: $变量名,或者${变量名} 变量名为一个字符用方式一,若变量名多于一个字 符建议用第2中方式 例子: a=linux bc="hello" echo $a echo ${bc} echo $bclinux //无输出 echo ${bc}linux
17
18
2、常用的运算符





整数的算术运算符 +、-、*、/、%; 赋值运算符 +=、-=、*=、/=、%= 位运算符 <<、>>、&、|、~、^; 位运算赋值运算符 <<=、>>=、&=、|=、~=、^=; 逻辑运算符: &&,||,!,>,>=,<,<=,!=,==
相关文档
最新文档