linux 脚本前不加斜杠,shell脚本- 基本脚本

内容纲要

多个命令一起运行,用分号隔离,长度不超过255;

井号(#)用过注释行,但第一行是个例外,#后面的惊叹号(!)会告诉shell用哪个shell来运行脚本;

显示消息echo(注意:sh内置的echo禁用选项)

默认情况下,要输出的字符串直接放到命令后面;

字符串内有单引号或双引号一种,用两一种划定起来;

把文本字符串和命令输出显示在同一行中用-n选项;

-e选项启用反斜杠转义的解释,-E相反也是默认;

环境变量:

set命令显示当前环境变量列表;

可前加美元符号($)或${环境变量}来使用环境变量,要显示$用反斜线();

注意:

[root@localhost code]# echo "the cost of the item is $15"

the cost of the item is 5

脚本将$15中的$1当做一个变量尝试去显示(但并未定义),再显示数字5

用户变量:

用户变量可以是任何由字母,数字或下划线组成的文本字符串,长度不超过20个,区分大小写 ,区分大小写;

使用等号将值赋给变量,在变量,等号和值之间不能出现空格;

* 与环境变量一样,用户变量通过美元符号($)引用;

命令替换:

反引号字符(`)或$(),用它们可以从命令输出中提取信息,并赋给变量;

#!/bin/bash

today=$(date +%Y%m%d)

echo $today.log

结果:20200226.log

可用于脚本中日志文件命名方法

命令替换会创建一个子shell来运行对应的命令。子shell( subshell)是由运行该脚本的shell 所创建出来的一个独立的子shell(child shell) 。正因如此,由该子shell所执行命令是无法 使用脚本中所创建的变量的。 在命令行提示符下使用路径 ./ 运行命令的话,也会创建出子shell;要是运行命令的时候 不加入路径,就不会创建子shell。如果你使用的是内建的shell命令,并不会涉及子shell。 在命令行提示符下运行脚本时一定要留心!

执行数学运算:

expr命令:较笨拙,且会有问题出现

tonglei@MacBook-Pro-3:/home/wwwroot/shell$ expr 2 * 5

expr: syntax error

tonglei@MacBook-Pro-3:/home/wwwroot/shell$ expr 2 \* 5

10

$[ operation ] 相对expr命令简单很多,且可直接识别 * 运算符,因为在方括号内;

bash shell数学运算符只支持整数运算。z shell(zsh)提供了完整的浮点数算术操作;

tonglei@MacBook-Pro-3:/home/code/shell-demo$ echo $[100 / 45]

2

浮点运算最常见的方案是用内建的bash计算器bc来解决;

variable=$(echo "options; expression" | bc)

退出脚本:

退出状态码:shell中运行的每个命令都使用退出状态码(exit status)告诉shell它已经运行完毕。退出状态 码是一个0~255的整数值,在命令结束运行时由命令传给shell。

状态码

描述

0

命令成功结束

1

一般性未知错误

2

不适合的shell命令

126

命令不可执行

127

没找到命令

128

无效的退出参数

128+x

与Linux信号x相关的严重错误

130

通过Ctrl+C终止的命令

255

正常范围之外的退出状态码

用变量$?来保存上个已执行命令的退出状态码,对于需要进行检查的 命令,必须在其运行完毕后立刻查看或使用$?变量;

exit命令: 允许你在脚本结束时指定一 个退出状态码。

退出状态码被缩减到了0~255的区间。shell通过模运算得到这个结果。一个值的模就是被除 后的余数。最终的结果是指定的数值除以256后得到的余数。在这个例子中,指定的值是300(返 回值),余数是44,因此这个余数就成了最后的状态退出码。

tonglei@MacBook-Pro-3:/home/code/shell-demo$ cat basic.sh

#!/bin/bash

exit 300

tonglei@MacBook-Pro-3:/home/code/shell-demo$ bash basic.sh

tonglei@MacBook-Pro-3:/home/code/shell-demo$ echo $?

44

参考资料: 《Linux命令行与shell脚本编程大全》2,3版

查看代码

打赏

4a95a62ded6af4e996a6e51f23dfd409.png微信扫一扫,打赏作者吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值