Shell脚本基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4
概述
echo命令 echo命令 用于在屏幕上显示消息 $ echo "This is an example of the echo command" 这是echo echo命令的一个例子 这是echo命令的一个例子
5
概述
# 符号 用于在shell脚本中可以包含注解 用于在shell脚本中可以包含注解入口 shell脚本中可以包含注解入口 echo “Hello” # This is a comment line. This would not produce any output echo “world” 这个例子中,第二行是一个注解的例子。 这个例子中,第二行是一个注解的例子。它 将被shell忽略, shell忽略 将被shell忽略,而且不产生任何消息
6
变量
创建变量 可以在任何时间通过简单的赋值来创建。 可以在任何时间通过简单的赋值来创建。 语法 <variable name>=<value> Linux中的所有变量都被当作字符串。 中的所有变量都被当作字符串 Linux中的所有变量都被当作字符串。 引用变量 $符号用于引用一个变量的内容
7
variable1=${variable2}
16
所有未应答的询问的总数=所有询问的总数所有未应答的询问的总数=所有询问的总数-应答的询问的 数量
echo "Please enter the total number of queries reported today." read totalqueries echo "Please enter the number of queries answered." read answered pending=$((totalqueriespending=$((totalqueries-answered)) echo "Number of calls pending = $pending“ chmod +x callpending
9
本地和全局 Shell 变量(续) 变量(
环境变量( 环境变量(续) 一些环境变量的例子是HOME, 一些环境变量的例子是HOME, PATH, PS1, PS2, LOGNAME, SHLVL, 及SHELL HOME变量 HOME变量 Linux系统中的每个用户都有一个相关的称 Linux系统中的每个用户都有一个相关的称 HOME的目录 作HOME的目录 当一个用户登录后,进入相应的HOME HOME的目录 当一个用户登录后,进入相应的HOME的目录 $ echo $HOME
18
test测试命令 test测试命令1 测试命令1
数值测试
-eq:等于则为真 eq: ne: -ne:不等于则为真 gt: -gt:大于则为真 ge: -ge:大于等于则为真 lt: -lt:小于则为真 -le:小于等于则为真 le:
19
test测试命令 test测试命令2 测试命令2
字符串测试
条件执行
test 和 [] 命令 求值表达式,并返回true (0)或 求值表达式,并返回true (0)或 false if构造 if构造 shell提供了循环和判定的构造 提供了循环和判定的构造, Linux shell提供了循环和判定的构造,可以 shell脚本中使用 在shell脚本中使用 算术测试 结合if构造, if构造 结合if构造,它可用于测试变量的数字值
8
读入值给变量 在执行shell脚本时,shell还允许用户 在执行shell脚本时,shell还允许用户 shell脚本时 从键盘中输入一个值给变量。 从键盘中输入一个值给变量。可以使用 read命令来做 read命令来做 $ read fname
本地和全局 Shell 变量
局部变量 当引用shell shell时 只有创建它的shell shell能够知道 当引用shell时,只有创建它的shell能够知道 到变量的存在 全局变量 称为子shell 称为子shell shell中创建的变量局部于百度文库建它的shell,除 中创建的变量局部于创建它的shell, shell中创建的变量局部于创建它的shell,除 非使用export export命令特别指出是全局的 非使用export命令特别指出是全局的 环境变量 通过改变这些变量的值,用户能够定制此环境 通过改变这些变量的值,
14
echo "The date is `date`”
expr命令 expr命令 用于求值算术表达式。 用于求值算术表达式。该命令的输出被发送到 标准输出 将在屏幕上显示9 $ expr 4 + 5 将在屏幕上显示9
命令替换( 命令替换(续)
算术展开: 算术展开: 你可以在$((… ))中括一个表达式 你可以在$((… ))中括一个表达式,用 中括一个表达式, 下面的命令来计算它的值: 下面的命令来计算它的值: $((expression))
本地和全局 Shell 变量(续) 变量(
环境变量( 环境变量(续) SHELL变量 SHELL变量 环境变量存储了用户的缺省shell 环境变量存储了用户的缺省shell env命令 env命令 可用来查看所有的已移出的环境变量表和 它们各自的值
13
命令替换
在单个命令行中使用多个命令的另一种方法(非 在单个命令行中使用多个命令的另一种方法( Pipes) Pipes)是通过命令替换
21
Example2
#!/bin/bash echo "Enter the percentage of calls answered same day." read actual if [ $actual -le 80 ] then echo "Your Grade is Average." elif [ $actual -gt 80 -a $actual -le 90 ] then echo "Your Grade is Good." else echo "Your Grade is Outstanding." fi
17
条件执行( 条件执行(续)
串测试 test命令也可用于字符串 test命令也可用于字符串 文件测试 test命令也可用于检查文件的状态 test命令也可用于检查文件的状态 exit命令 exit命令 用于终止shell脚本的执行并返回到$ shell脚本的执行并返回到 用于终止shell脚本的执行并返回到$提示符 下
10
本地和全局 Shell 变量(续)11 变量(
环境变量( 环境变量(续) PATH变量 PATH变量 包含一列用冒号定界的目录的路径名字, 用冒号定界的目录的路径名字 包含一列用冒号定界的目录的路径名字, 便于可执行程序的搜索 PS1变量 PS1变量 1)变量包含了shell提 变量包含了shell PS1(Prompt String 1)变量包含了shell提 示符, 示符,$符号 $ PS1="HELLO>" <Enter> HELLO> New prompt
1
Shell脚本基础 Shell脚本基础
主讲: 主讲:刘晓涛
议程
创建和执行shell 创建和执行shell脚本 shell脚本 使用echo echo命令显示消息 使用echo命令显示消息 创建变量 使用本地和全局变量 计算表达式 使用if构造执行基于条件的shell if构造执行基于条件的shell脚本 使用if构造执行基于条件的shell脚本 使用case构造执行基于条件的shell case构造执行基于条件的shell脚本 使用case构造执行基于条件的shell脚本 识别用于执行重复任务的while for、 while、 识别用于执行重复任务的while、for、和until 构造 shell脚本中使用break和continue语句 脚本中使用break 在shell脚本中使用break和continue语句 控制进程的执行 计算命令的开始到结束之间的时间
=:等于则为真 !=: !=:不相等则为真 -z字符串:字符串长度为零则为真 字符串: -n字符串:字符串长度不为零则为真 字符串:
20
test测试命令 test测试命令3 测试命令3
文件测试
-e文件名:如果文件存在则为真 文件名: 文件名: -r文件名:如果文件存在且可读则为真 文件名: -w文件名:如果文件存在且可写则为真 文件名: -x文件名:如果文件存在且可执行则为真 文件名: -s文件名:如果文件存在且至少有一个字符则为真 文件名: -d文件名:如果文件存在且为目录则为真 文件名: -f文件名:如果文件存在且为普通文件则为真 -c文件名:如果文件存在且为字符型特殊文件则为真 文件名: 文件名: -b文件名:如果文件存在且为块特殊文件则为真 -a 并且 –o 或者 ! 非
本地和全局 Shell 变量(续) 12 变量(
环境变量( 环境变量(续) PS2变量 PS2变量 是为第二个提示符设置值的环境变量 LOGNAME变量 LOGNAME变量 包含用户的注册名字 $ echo “${LOGNAME}” SHLVL变量 SHLVL变量 该变量包含你当前工作的shell 该变量包含你当前工作的shell level
22
case…esac 构造
shell脚本中使用的这个构造依据变量的 shell脚本中使用的这个构造依据变量的 值而执行一组特定指令
23
当变量的值和其中一个指定的值相匹配时, 当变量的值和其中一个指定的值相匹配时, 就执行写在该值下的一组命令
Example3
#!/bin/bash echo " List of Services Offered by Diaz Telecommunications " echo " 1) Global Roam" echo " 2) V-mail" Vecho " 3) Mail on Move" echo " 4) Caller-ID" Callerecho " 5) Dial a Pizza" echo –n "Select the service for which you need more information [1-5] : " [1read choice case $choice in 1) echo "You just need one cell-phone number wherever you travel across cellthe world." ;; 2) echo "You can record your messages when you are not able to take a call.";; 3) echo "You can receive e-mail messages on your cell-phone.";; ecell4) echo "You can display the callers telephone number on your handset screen whenever you receive a call so that you know who's calling.";; 5) echo "You can order for pizza from your cell-phone.";; cell*) echo "You have selected an invalid option.";; esac
2
Shell图示 Shell图示
3
概述
Shell脚本 Shell脚本 如果你有一系列经常使用的Linux命令, Linux命令 如果你有一系列经常使用的Linux命令,你可 以把它们存储在一个文件中。Shell可以读取 以把它们存储在一个文件中。Shell可以读取 这个文件并执行其中的命令。 这个文件并执行其中的命令。这样的文件被称 为脚本文件 执行shell shell脚本 执行shell脚本 要创建一个shell脚本, shell脚本 要创建一个shell脚本,你要使用任何编辑器 比如vi vi在文本文件中编写它 比如vi在文本文件中编写它 为了使用bash shell来执行脚本magic,其命令 来执行脚本magic, 为了使用bash shell来执行脚本magic,其命令 是: $ bash magic 或 $ ./magic 为终端提示符(普通用户) $ 为终端提示符(普通用户)
15
Example1
编写一个shell脚本用于计算呼叫中心未应答的询问的数量。 编写一个shell脚本用于计算呼叫中心未应答的询问的数量。该脚本 shell脚本用于计算呼叫中心未应答的询问的数量 应该接收一天内所报告的询问的总数和应答的询问的数量, 应该接收一天内所报告的询问的总数和应答的询问的数量,以便计算 未应答的询问的数量。 未应答的询问的数量。