Linux运维笔记----Bash Scripts基础II
2016-09-11 21:07
351 查看
Bash Scripts基础II
1.Bash位置参数
有两种简单的方法可以将用户输入读入bash中的变量。 - 用read提示用户输入(使用-p选项)并将其直接存储到一个或多个变量: 交互式输入 read -p 'Enter your first and last name: ' FIRST LAST - 使用位置参数来读取传递给脚本的命令行参数或选项输入。各种特殊变量存储传递的选项编号。 Bash解析的个别参数或整个原始命令行。 指定的位置参数总数: $# 位置参数自身: $0、$1、$2、$3.... 所有位置参数: $@、$*
2.退出状态
Linux命令完成时,将返回退出状态。成功完成程序时,将返回0的退出状态。这被bash当作逻辑True值。非零退出状态通常表示发生了错误,并且被bash当作逻辑False值。
推出状态的值被存储在”?”中,可以使用以下命令查看:
echo $?
例如:grep的退出状态的含义:
0 – 在指定的文件中找到了模式 1 – 在指定的文件中未找到模式 >1 – 一些其他错误(无法打开文件、错误的搜索表达式等)
<1>成功退出
<2>错误退出
3.test条件判断
test命令可用于评估bash脚本中的表达式。它评估其参数所指定的表达式,如果表达式为true,返回零退出状态,如果表达式为false,则返回非零退出状态。test具有替代语法,使用方括号"[]"将表达式括起来,这样更易于阅读。 语法:test EXPRESSION 或 [ EXPRESSION ]
<1>非零或零长度字符串运算符:test -{n|z} STRING
练习:用交互式登陆,当用户输入add则创建一个用户,输入del则删除一个用户。
<2>字符串比较运算符:=、!=
<3>数字比较运算符:-eq(等于)、-ne(不等于)、-lt(小于)、-le(小于等于)、-gt(大于)、-ge(大于等于)
<4>文件状态运算符:
test -{b|c|e|f|d|r|w|x|s|L} FILE/DIRECTORY -b 块设备文件 -c 字符特殊文件 -e 文件存在 -f 普通文件 -d 目录 -r 可读文件 -w 可写文件 -x 可执行文件 -s 文件不为空 -L 链接文件
<5>二进制文件运算符:-ef、-nt、-ot
File1 -ef File2 两文件指向相同的设备和节点号 File1 -nt File2 File1比File2新:File1存在,File2不存在 File1 -ot File2 File1比File2老;File1不存在,File2存在
<6>逻辑运算符:-o、-a、!、&&、||
-a :与逻辑,可以用&&代替 -o :或逻辑,可以用 || 代替 !:非操作
4.if语句
if命令检查if后面的命令或列表的退出值。如果第一个命令评估为true/零,则运行then之后的命令列表,直至任一else。如果第一个命令评估为false/非零,则运行else与fi之间的命令列表(反向平写if,标记if块的结束)。 语法: if command; then command; command2; else command3; fi
练习:判断一个文件是链接还是目录
练习:增加删除用户改进。可以检测增加的用户是否存在
5.case语句
case语句 :它能够把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪部分代码。
练习:输入APPLE输出BANAN,反之。
6.expect语句
在shell中利用expect实现自动应答脚本。 !/usr/bin/expect 这一行告诉操作系统脚本里的代码使用那一个shell来执行。 set timeout 10 设置后面所有的expect命令的等待响应的超时时间,单位为秒。 spawn talk spawn是expect的内部命令,作用是给后面的shell指令加个壳,用来传递交互指令。 expect "who" 判断上次输出结果里是否包含“who”的字符串,如果有则立即返回,否则等待超时时间后返回。 send "westos\n" 执行交互动作,相当于手工输入"westos"。 expect eof 作用是在输出中搜索文件结束符,如果没有这一行,脚本会立即退出,得不到正确结果。 interact 执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。否则退出登录。 $argv 参数数组 expect脚本可以接受从bash传递过来的参数.可以使用[lindex $argv n]获得,n从0开始,分别表示第一个,第二个,第三个....参数。
练习:自动应答ssh登陆
7.环境变量
shell和脚本使用变量来存储数据 ,有些变量可以连同它们的内容传递给子进程,这些变量我们称之为环境变量。
设置环境变量的三种办法:
<1>在shell中设置,只对当前的shell起作用,换一个shell就无效了。
<2>修改/etc/profile文件,所有用户都有权使用这个环境变量,可能会牵扯一些安全性问题。
在文件最后添加:$PATH=“NEW_PATH”
添加后执行:source /etc/profile重新加载文件
<3>修改~/._profile文件,这种方法可以把使用环境变量的权控制到用户级别 。
使用别名
alias命令可以用来自定义属于自己的系统命令,写入~/.bashrc 文件永久生效。
查看别名:alias
设置别名:
使用函数
相关文章推荐
- Linux运维笔记----Bash Scripts基础I
- linux运维笔记day6--基础命令
- Linux自学笔记——bash的基础特性
- linux笔记:shell基础和bash的基本功能
- Linux学习笔记:bash的基础特性之变量
- Linux运维笔记(一)网络基础知识
- 【Linux学习笔记】20:Bash基础-历史命令
- linux笔记:shell基础-bash变量
- Linux运维学习笔记之四:安装后的基本调优及安全设置(系统基础优化)
- Linux基础学习笔记(Linux达人养成计划 II)
- Linux运维学习笔记之二十:MySQL备份和恢复基础
- 学习Linux 《鸟哥的Linux私房菜 基础学习篇(第三版)》--第10章 认识与学习Bash 笔记
- Linux运维笔记----shell基础命令
- Linux基础学习笔记之bash的快捷键
- 【Linux学习笔记】21:Bash基础-输入输出重定向
- 【Linux学习笔记】22:Bash基础-管道符"|"
- 【Linux学习笔记】19:Bash基础-命令别名与快捷键
- 运维基础--Linux中bash的基础特性
- 马哥2016全新Linux+Python高端运维班-Linux 网络基础管理,包管理,bash脚本练习
- linux笔记:shell基础-bash基本功能