shell脚本积累

$0 这个脚本的执行名字

$n 这个脚本的第n个参数

$* 这个脚本的所有参数

$# 这个脚本参数个数

$? 上一个指令的返回值,0代表没有错误

 

变量名外加花括号,识别边界

echo "I am good at ${skill}Script"

aaa=${var} 将变量var的内容赋给aaa

aaa=$(echo $PATH) 括号里必须为命令,将命令的结果赋给aaa

 

${file#*/}:删掉第一个 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt ${file##*/}:删掉最后一个 / 及其左边的字符串:my.file.txt ${file#*.}:删掉第一个 . 及其左边的字符串:file.txt ${file##*.}:删掉最后一个 . 及其左边的字符串:txt ${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3 ${file%%/*}:删掉第一个 / 及其右边的字符串:(空值) ${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file ${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my

 

字符串:

单引号 ‘ ’ ——任何字符都原样输出,变量无效

双引号 “ ” ——可以有变量、转义字符

反引号 ` ` ——将特殊符号转义成普通字符,识别command

str="Hello, I know you are \"$your_name\"! \n"

echo -e $str -e可以输出转义字符

-c 两个echo之间不换行

输出结果为:

Hello, I know you are "runoob"!

 

系统识别将前两个单引号组合,后两个组合

 

 

取字符串长度

string="abcd" echo ${#string} #输出 4

 

算数运行

result=$[a+b] equal result=`expr $a + $b `

 

 

 

关系运算符:

-eq 是否相等 ==

-ne 是否不等 !=

-gt 大于 >

-lt 小于 <

-ge >=

-le <=

布尔运算:

不等于 !=

或 -o

与 -a

 

 

if [ -f $file ]

then

command

elif [ ]

then

command

else

command

fi

 

let命令 let A++ 变量不需要加$

let 表达式 等于 shell((数学运算表达式))

 

 

函数

funWithReturn(){ echo "这个函数会对输入的两个数字进行相加运算..." echo "输入第一个数字: " read aNum echo "输入第二个数字: " read anotherNum echo "两个数字分别为 $aNum 和 $anotherNum !" return $(($aNum+$anotherNum)) /return $[a+b] } funWithReturn echo "输入的两个数字之和为 $? !"

 

$#

传递到脚本的参数个数

$*

以一个单字符串显示所有向脚本传递的参数

$$

脚本运行的当前进程ID号

$!

后台运行的最后一个进程的ID号

$@

与$*相同,但是使用时加引号,并在引号中返回每个参数。

$-

显示Shell使用的当前选项,与set命令功能相同。

$?

显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

 

引用脚本 . filename

. ./filename

 

set -e 当命令的返回值为非零状态时,则立即退出脚本的执行。如果有脚本调用,被调脚本不会被主脚本的影响

 

一个shell中定义的变量只能在一个shell中使用,其他shell不可使用,若想使其生效,需用export命令对已定义的变量进行输出,export命令将使系统在创建每一个新的shell时,定义这个变量的一个拷贝

 

basename,剥除路径与后缀,只保留文件名

 

set -e bash如果任何语句的执行结果不是true则应该退出。可以使用set -o errexit,它的作用与set -e相同。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
内容简介 《Shell脚本专家指南》旨在为Linux、Unix以及OSx系统管理员提供短小精悍且功能强大的shell实现解决方案,教会读者如何使用现有调试器调试shell脚本。全书分为3个部分:脚本技术基础、系统交互和高级技术、有用的脚本实例。主要内容包括如何使小到中型的系统管理任务自动化,分析系统数据并编辑配置文件,使用bash和ksh等编写IAnux、Unix和OSX应用程序的脚本文件等。 《Shell脚本专家指南》面向中高级的shell程序员,以及需要解决日常问题的系统管理员,但假定读者能够读懂一般的shell代码。 编辑推荐 《Shell脚本专家指南》是我多年从事系统管理员一职所积累的非常有用的脚本和技术集合。尽管这些脚本是从一名系统管理员的角度进行编写的。但你几乎可以为任何你能想得到的目的而重用它们。《Shell脚本专家指南》中的所有代码或者是非常有用,或者是非常地独特(甚至可能会有一点与众不同)。不过其中有些解决方案所用到的技术可能是你自己很难想出来的。 当我还在学习shell脚本编程的时候,我会经常参考一些由别人编写出来的实例,以进一步地扩展自己的视野。而结果往往是我发现一些正在困扰着自己的问题,我的同事和朋友们却早已发明了又酷又聪明的解决方案。因此,我便萌生了写这《Shell脚本专家指南》的念头,以易于理解的形式,介绍所有这些关键技术。 我写此书的目的。不是为了创作出一本shelI脚本编程的入门书。而是希望能够提供一些更具深度的内容。它的作用不仅仅是解释sheIl代码的内容,更在于讲述在大多数情况下如何以及为何使用某种特定的编程逻辑。这些脚本将帮助你大大提高编程技能。并提高你解决问题和选择解决方案的能力。《Shell脚本专家指南》中的大部分脚本已经在以可靠性为关键因素的生产环境下,经历了多年的不断锤炼和改进。因此,《Shell脚本专家指南》对于那些希望在案头放一本案例精选的读者来说,将会是最佳的参考资料。 这里囊括了所有你迫切希望解决、却又无处发问的Shell脚本问题。 作者简介 作者:(美国)彼得(Ron Peters) 译者:李晓群 付弘宇 彼得(Ron Peters),在过去的15年中大部分时间都在做系统管理员的工作。他曾是Intel公司的高级管理员,在那些日子里,他总是每周7天、每天24小时不停地工作,他也曾是一个专用于设计工作的大型计算机集群的首席管理员。他现在是Columbia运动服装公司的LinuxRJNIx系统管理员。他喜欢和家人在一起,喜欢修理他的道奇Challenger汽车,还喜欢玩美式壁球。 目录 第1部分 基本脚本编程技术 第1章 shell脚本的错误检测 1.1 shell跟踪选项 1.2 简单输出语句 1.3 根据调试层次控制输出 1.4 用函数简化错误检查 1.5 手动单步执行 第2章 标准函数库 2.1 库文件 2.2 一些有用的函数 2.3 使用库 第3章 日期和时间操作 3.1 用天数来计算日期 3.1.1 自从纪元以来的天数 3.1.2 以秒计算日期的其他方法 3.2 评估当前日期和时间 第4章 比较和测试 比较的基本原理 第5章 接受命令行选项、开关和参数 第6章 测试变量和设置默认值 6.1 设置默认值 6.2 变量替换 6.2.1 :=句法 6.2.2 =句法 6.2.3 :-句法 6.2.4 -句法 6.2.5 :?句法 6.2.6 ?句法 6.2.7 :+句法 6.2.8 +句法 第7章 非直接引用变量 7.1 用非直接变量监控日志文件 7.2 主监控循环 第8章 shell进程树 8.1 用数组实现进程树 8.2 用非直接变量实现进程树 8.3 用Bourneshell实现进程树 第9章 数据重定向 9.1 避免错误 9.2 普通重定向 9.3 访问用户指定的文件句柄 9.4 从shell中访问描述符 第10章 管道输入读 10.1 逐行选项1 10.2 逐行选项2 10.3 逐行选项3 10.4 逐行选项4 10.5 直接管道读 10.6 逐字处理输入 第2部分 系统交互与高级技术 第11章 shell中的数学 11.1 expr 11.2 bc 11.3 de 第12章 cron 12.1 crontab条目 12.2 环境问题 12.3 输出重定向 第13章 自链接脚本 第14章 对并行进程的数量控制 14.1 用ksh实现并行进程 14.2 用bash实现并行进程 第15章 命令行编辑和历史命令 15.1 建立vi编辑环境 15.1.1 bash 15.1.2 ksh 15.2 命令和文件补全 第16章 从命令行编写脚本 例子 第17章 用expect实现用户输出自动化 17.1 为expect脚本定制参数的shell脚本 17.2 让telnet的expect脚本自动执行 第18章 用户输入超时 18.1 手动实现超时 18.2 使用stty实现超时 18.3 一般的超时功能 第19章 即时键盘响应 第20章 目录的复制 20.1 使用cp 20.2 使用tar 20.3 使用find 20.4 使用。rsync 第21章 X显示环境概述 21.1 display变量 21.2 使用ssh处理X流量 21.3 通过第三方系统的X应用 21.4 用户-Profile项 21.5 根-Profile项 21.6 弹出一个临时的根窗口 第22章 X导航窗口 22.1 导航窗口的作用 22.2 建立导航 22.3 浏览窗口 第23章 命令行电子邮件附件 23.1 uuencode 23.2 MIME编码 第24章 单行文本处理 24.1 显示特殊域 24.2 指定域分隔符 24.3 简单的模式匹配 24.4 几个值的匹配域 24.5 确定域的数目 24.6 确定最后一个域 24.7 确定倒数第二个域 24.8 给awk传送变量 24.9 在一定条件下使用给awk传送的变量 24.10 显示域的范围(主要方法) 24.11 显示域的范围(备选方法) 24.12 使用awk确定串的长度 24.13 使用expr确定串的长度 24.14 使用awk显示一个子串 24.15 使用expr显示一个子串 24.16 使用sed进行简单的查找和替换 24.17 忽略文件中的空行和注释行 24.18 使用sed进行双查找和替换 24.19 使用sed过滤行 24.20 使用egrep查找多个串 24.21 查找进程表的一个清理方法 24.22 使用awk进行列求和计算 24.23 使用awk产生随机数字 24.24 从shell中产生随机数字 24.25 使用sed显示基于字符的域 24.26 特殊字符转义 24.27 使用grep从一个模式匹配中返回末尾行 24.28 使用grep返回模式匹配之前的行 第25章 在适当的位置编辑文件 25.1 使用ed进行简单的查找和替换 25.2 使用ed查找和替换、分割 25.3 ed命令的例子 25.4 对一个文件中的特殊字符转义 第26章 平面文件中的变量赋值 第27章 读取管道输入 第28章 使用cat的自由格式输出 第29章 自动交互处理 第3部分 有用的脚本实例 第30章 使用procmail自动处理邮件 30.1.procmailrc文件 30.2 使用示例 30.3 代码 第31章 进程管理监视器 第32章 管理文件的计数 32.1 文件计数监视器 32.2 测试文件数目的计算方法 第33章 从inittab执行进程 第34章 自动RCS 第35章 带颜色的/proc报告 第36章 口令老化通知 36.1 脚本初始化 36.2 开始处理 36.3 确定口令年龄 第37章 伪shadow文件 第38章 搭建Linux金系统 第39章 系统快照 39.1 快照脚本 39.2 快照升级 39.3 创建最新快照 39.4 最后的想法 第40章 删除大文件和日志滚动 第41章 核心探测器 第42章 网络适配器故障转移 42.1 检查网络 42.2 转换接口 附录A 测试开关 附录B 特殊参数 附录C shell脚本编程的其他资源 C.1 手册 C.2 图书 C.2.1 脚本编程图书 C.2.2 补充图书 C.3 shell资源 C.4.网络资源

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值