Linuxshell脚本编写基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Page 7
Linux Shell脚本编写基础-第一章 shell简介 例子(使用编辑器vi创建一个脚本) #!/bin/bash #helloworld.sh #print "Hello world" a="hello world" echo ${a} 执行helloworld.sh #增加执行权限 chmod +x helloworld.sh #执行脚本 ./helloworld.sh
Page 32
第三章 shell输入与输出 read语句可以从键盘或文件的某一行文本中读取信息,并将其赋给 一个变量。 read varible1 varible2 … - 如果只指定了一个变量,那么read将会把所有的输入赋给该变 量,直到遇到第一个文件结束符或者回车;如果给出了多个变 量,他们按顺序分别被赋予不同的变量。Shell将用空格作为变量 之间的分隔符。
◆什么是shell ◆ Shell脚本的开头 ◆怎样执行shell脚本 ◆简单例子
Page 4
Linux Shell脚本编写基础-第一章 shell简介 Shell 是核心程序(kernel)之外的指令解析器,是一个程序 ,同时是一种命令语言和程序设计语言。 操作系统与Shell -输入指令(命令) -解释器解释指令 -调用操作系统系统调用,获得结果 -解释器将结果返回给用户(命令) 操作系统上的Shell -MSDOS: command.com -Windows xp(2000): cmd -Linux: ash, csh, Bash
Page 24
第二章 变量和运算符 运算符类型 - 赋值运算符 =, +=, -=, *=, /=, %=, &=, ^=, |=, >>=, <<= 表达式 let count = $count + $change let count+=$change 例子: var=100 let var+=4 echo $var 输出结果 104
Page 14
第二章 变量和运算符 本地变量 (续) 有时候变量名很容易与其他文字混淆,比如: num=2 echo “this is the $numnd” 这并不会打印出“this is the 2nd”,而仅仅打印“this is the ”,因为 shell会去搜索变量numnd的值,但是这个变量是没有值的。可以使 用花括号来告诉shell我们要打印的是num变量: num=2 echo "this is the ${num}nd" 这将打印: this is the 2nd
Linux Shell脚本编写基础
NetentSec QA 功能组
Linux Shell脚本编写基础
◆第一章 ◆第二章 ◆第三章
Shell简介 变量和运算符 shell输入与输出
◆第四章 ◆第五章
控制流结构 文本过滤
Page 2
第一章 Shell简介
Page 3
Linux Shell脚本编写基础-第一章 shell简介
Page 16
第二章 变量和运算符 变量替换 用变量的值替换它的名字 在变量名前加$,使用echo命令可以显示单个变量的取值。 例如: test=“this is a test” echo $test
Page 17
第二章 变量和运算符 变量替换(续)
${name} 显示实际值到name
${name:+value}
Page 13
第二章 变量和运算符 本地变量 - 是用户现在的shell脚本生命周期中使用的变量; 在shell编程中,所有的变量都由字符串组成,并且您不需要对变 量进行声明。要赋值给一个变量,您可以这样写: #!/bin/bash #对变量赋值: a=“hello world” # 现在打印变量a的内容: echo “A is:” echo $a
Page 15
第二章 变量和运算符 环境变量 由export关键字处理过的变量叫做环境变量。我们不对环境变量进 行讨论,因为通常情况下仅仅在登录脚本中使用环境变量。 环境变量用于所有用户进程(经常称为子进程)。登录进程为父进 程,shell中执行的用户进程称为子进程。不像本地变量(只用于现 在的shell)环境变量可以用于所有子进程,包括编辑器、脚本和应 用。 使用export进行设定 例如: export TEST=“beijing” 使用env进行查看所有环境变量。
Page 33
第三章 shell输入与输出 read举例 #!/bin/bash #readname echo -n "First Name:" read firstname echo -n "Last Name:" read lastname echo -e "Your First Name is :${firstname}\n" echo -e "Your Last Name is :${lastname}\n" 执行例子readname.sh
Page 8
Linux Shell脚本编写基础-第一章 shell简介 顺序执行 Command1; command2; command3 … 检查执行 Comman1 && command2 Command1 执行成功后执行command2 cp abc def && echo “copy is ok” Command1 || command2 Command1执行失败后执行command2 touch /etc/tests.conf || exit 命令组合 (command1;command2) (ls cd&&ll)&&(echo ok! ) 当前shell执行或在子shell执行
Page 31
第三章 shell输入与输出 echo - echo命令可以显示文本行或者变量,或者把字符串输入到文件。 echo [option] string - -e 解析转义字符 - -n 回车不换行,linux系统默认回车换行 - 转义符(\c,\f,\t,\n) - \c 回车不换行 - \f clear屏幕 - \t 一个tab - \n 换行(回车换行?) - 例子:echod.sh
Page 27
第二章 变量和运算符
作业 char1=‘$LONG,how are you !’ char2=“$LONG,how are you !” 变量char1与char2的值相同吗?为什么? $[ 3^0 ]的结果?为什么? $[ 3|1 ]的结果?为什么? $[ 3&2 ]的结果?为什么? $[ 3||1 ]的结果?为什么? $[ 3&&2 ]的结果?为什么? $[ 10#8+1 ]的结果?为什么?
Page 19
第二章 变量和运算符 位置变量 位置变量表示:$0,$1……$9
$0 脚本 名字 $1 a $2 b $3 c $4 d $5 e $6 f $7 $8 $9
向脚本中使用位置参数 向系统命令传递参数 例子:parameter.sh parameter2.sh
Page 20
第二章 变量和运算符 特殊变量 $# (传递到脚本的参数个数) $* (以一个单字符串显示所有向脚本传递的参数。与位置变量 不同,此选项参数可以超过9个) $$ (脚本运行的当前进程ID号) $! (后台运行的最后一个进程的进程ID号) $@ (与$#相同,但是使用时加引号,并在引号中返回每个参 数) $- (显示shell使用的当前选项,与set命令功能相同) $? (显示最后命令的推出状态。0表示没有错误,其他任何值 表明有错误。)
课后作业 - 自己尝试编写一个脚本,并运行。
Page 11
第二章 变量和运算符
Page 12
第二章 变量和运算符 什么是shell变量? - 放在内存中的一定存储单元,存储单元中存放变量的值,这个值 是可以改变的。 变量有哪些? - 本地变量 - 环境变量 - 位置变量 - 标准变量 - 特殊变量
如果设置了name,则显示值value,否则,为空
${name:?value}
百度文库
如果未设置name,显示用户定义错误信息value
${name:-value}
如果未设置name,则显示值value
${name:=value}
如果未设置name,设置其值value,并显示
Page 18
第二章 变量和运算符 变量清除 格式:unset 变量名 例如: test=“this is a test” echo ${test} 得到结果:This is a test unset test echo ${test} 得到结果:空白
Page 6
Linux Shell脚本编写基础-第一章 shell简介 开头 程序必须以下面的行开始(必须放在文件的第一行): #!/bin/bash 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。例子 中我们使用/bin/bash来执行程序。 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。 我们真诚地建议您在程序中使用注释。 如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您 也能在很短的时间内明白该脚本的作用以及工作原理。
Page 21
第二章 变量和运算符 运算符 运算符是对计算机发出的指令。 运算对象 数字、字符(字面值) 变量 表达式 表达式:运算符和运算对象的组合体
Page 22
第二章 变量和运算符 运算符类型 按位运算符:~, >>, <<, &, |, ^ $[ ]:告诉shell对方括号中的表达式求值。 例子: #!/bin/bash #$[ ]演示 echo $[ 2 + 3 ]
Page 28
第三章 shell输入与输出
Page 29
第三章 shell输入与输出
echo read cat tee 管道 文件重定向 标准输入输出
Page 30
第三章 shell输入与输出 输入 - 参数输入 Command argument1 argument2 … $0代表执行命令 $1代表参数1 $2代表参数2 - 标准输入 Read argument1 argument2 类似于C中的scanf 输出 Echo –e 可以使用Linux终端屏幕控制 例子:echo -ne "\033[31m hello world! ";echo -e "\033[0m"
Page 5
Linux Shell脚本编写基础-第一章 shell简介 Shell的类型 ash、bash、ksh、csh等 - cat /etc/shells #得到系统中有哪些shell - echo $SHELL #得到系统目前运行在哪个shell下 使用shell的原因: - Shell是用户与操作系统之间的接口,是交互式的 - 预先重复的指令可以保存在文件中 - 可以编程,使得程序流程自动化 - 长期使用的指令可以流程化、自动化 - 组合、编辑指令,构建自己的新指令 - 脚本是编程语言,变量、语句和函数能够处理更复杂的任务
Page 9
Linux Shell脚本编写基础-第一章 shell简介 简单调试 - 在脚本中增加echo语句 - 在脚本中增加read语句 复杂调试 - Shell 提供的特殊参数 - -v 当输入行读入时打印 - -x 显示扩展命令和参数的值
Page 10
Linux Shell脚本编写基础-第一章 shell简介
Page 25
第二章 变量和运算符 $[ ]可以接受不同基数的运算; 格式$[ base#n ]; base可以是2-64的任何基数; 例子: echo $[ 2#11+1 ] 结果?
Page 26
第二章 变量和运算符 双引号 - 值替换变量 - 例子: echo “1 2 $x” 单引号 - 直接引用变量 - 例子: echo ‘1 2 $x’ 反引号 - 执行命令 - 例子: echo ` echo $HOSTNAME` 反斜线 - 转意符:& * + ^ $ ` “ | ?
Page 23
第二章 变量和运算符 运算符类型 - 按位运算符
运算符 ~op1 op1>>op2 op1<<op2 op1&op2 op1|op2 op1^op2 说明 反运算符(0变1,1变0) 右移运算符(右移除以2,左边补0) 左移运算符(每左移一位则乘以2) 与比较运算符(都为1则为1,否则为0) 或比较运算符(有一个为1则为1,否则为0) 异或比较运算符(互补则为1,否则为0)