Bash Shell 脚本编程(一)

3 篇文章 0 订阅

编译简单的脚本

编写好 shell 脚本之后,执行脚本有3种方法:

①脚本文件路径:./text2.sh

②sh 脚本:sh text2.sh

③source:source text2.sh

只要脚本文件路径没有写错,sh 或 source 命令都可以直接执行该脚本,使用直接访问脚本路径的方式提示权限不够:

因为新建文件之后,用户默认是读写权限,需要给脚本设置可执行权限之后才能顺利运行

提升用户权限之后再运行就没有问题了:

接收用户参数:按照上面的脚本写法真的很不灵活, Shell 脚本为了能够让用户更灵活的完成工作需求,所以在可执行文件中内设了接收用户参数的位置变量

判断用户参数                                 

Shell 脚本有时还要判断用户输入的参数,例如像 mkdir 命令一样,当目录不存在则创建,若存在则报错。条件测试语句能够测试特定的表达式是否成立,当条件成立时返回值为0,否则返回其它数值。

符号 && 代表逻辑上的"与",当前面的命令执行成功才会执行后面的命令,判断 /dev/cdrom 设备是否存在,若存在则输出Exist:

这里要注意一下:&& 和 || 的逻辑含义,因为前面的 && 不成立,所以后面的 || 才会执行。

[ 补充环境变量知识点(可忽略) ]

Shell维护着一组环境变量用来记录特定的系统信息,比如系统名称,登录到系统上的用户名,用户默认主目录以及 shell 查找程序的搜索路径,可以用 set 命令来显示一份完整的当前环境变量列表:

在脚本中,你可以在环境变量名称前加上美元符($)来使用这些环境变量,$USER、$UID和$HOME环境变量用来显示已登录用户的相关信息,脚本输入如下:

一起来做一个练习题吧

上面的脚本中"$15"和"\$15"同样被执行之后结果却不相同,这里需要注意:只要脚本在引号中出现 $ (美元符),它就会以为你在引用一个变量,脚本会尝试显示变量 $1(但并未定义),再显示数字5,要显示美元符,必须在它前面加一个反斜线!

论转义符的重要性(感兴趣的同学可以去了解一下 expr 命令的用法)

输入输出重定向

①输出重定向:将命令输出重定向到文件

有时候你想要保存某个命令的输出而不仅仅只是让它显示在显示器上,可以将命令的输出重定向到另一个位置(比如:文件)也可以将文件重定向到命令输入,最基本的重定向将命令的输出发送到一个文件中:

有时你可能并不想覆盖原有内容,而是将命令的输出追加到已有文件中,可以用双大于号(>>)来追加数据,此时在文件 text5 中仍包含 who 命令的数据,现在追加来自 date 命令的输出:

②输入重定向:将文件的内容重定向到命令,输入重定向符号是小于号(<)。通过将文本文件重定向到 wc 命令,就可以的到文件中的行、词和字节的计数,这个例子说明 text5 文件有3行、16个单词、131个字节:

管道(pipe)

有时候将一个命令的输出作为另一个命令的输入用重定向来实现会比较繁琐,这就牵涉到管线的命令了,管线命令使用[ | ]这个界定符号。

用管道将 rpm 命令的输出送入 sort 命令对其进行排序并在显示屏上显示:

在这个例子中会先执行 sort 命令 ,将它输出通过管道传给 sort 命令,然后再将 sort 的输出通过管道传给 more 命令来显示:

[]    方括号   在 bash 中,在将一个数学运算结果赋给某个变量时,可以用美元符($)和方括号([ ])将数学表达式围起来:

退出脚本 

shell 中运行的每个命令都使用退出状态码(exit status)告诉 shell 它已经运行完毕,它是一个 0~255 的整数值,在命令结束运行时由命令传给 shell。Linux 提供了一个专门的变量 $? 来保存上一个已执行命令的退出状态码,对于需要进行检查的命令,必须在运行完毕后立刻查看或使用 $? 变量它的值会变成由 shell 所执行的最后一条命令的退出状态码。查看退出状态码:

一个成功结束的命令退出状态码是 0 。如果一个命令结束时由错误,退出状态码就是一个正数值:

exit 命令   可以改变这种默认行为,返回自己退出的状态码,exit 命令允许你在脚本结束时指定一个退出状态码:

也可以在 exit 命令的参数中使用变量:

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值