退出状态码
-
Shell 中运行的命令会使用0-255之间的整数值,作为退出状态码,并以此来告知shell该命令执行的状态。
-
通常情况下,约定0代表命令成功结束,非0代表程序非正常退出。
-
假如没有指定返回值,那么会用脚本的最后一个命令的执行状态,作为退出的状态码,支持用exit命令指定退出码。退出的状态码范围是0~255,如果自定义的退出码不在范围内,会对其执行取模运算;
-
假如执行的是一个有返回值的函数或者程序,那么执行结束的返回值会被当做当前函数或程序的退出状态值。
典型退出状态码及其含义 | |
退出状态码 | 含义 |
0 | 命令运行成功 |
1 | 通知未知错误 |
2 | 误用shell命令 |
126 | 命令不可执行 |
127 | 没有找到命令 |
128 | 无效退出参数 |
128+x | linux信号x的严重错误 |
130 | 命令通过Ctrl+C终止 |
255 | 退出状态码越界 |
举例1:
未写返回值,执行成功,为0
function print(){
echo " hello world "
}
print
echo $?
举例2
写了返回值,且在0-255,显示返回值
举例3
写了返回值,且不在0-255,执行成功显示0
sed
sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、删、改、查等操作,支持按行、按字段、按正则匹配文本内容,灵活方便,特别适合于大文件的编辑。
选项
-r:使用扩展正则表达式
-e:它告诉sed将下一个参数解释为一个sed指令,只有当命令行上给出多个sed指令时才需要使用-e选项
-f:后跟保存了sed指令的文件
-i:直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改
-n:取消默认输出,sed默认会输出所有文本内容,使用-n参数后只显示处理过的行
操作
a:追加 向匹配行后面插入内容
c:更改 更改匹配行的内容
i:插入 向匹配行前插入内容
d:删除 删除匹配的内容
s:替换 替换掉匹配的内容
p:打印 打印出匹配的内容,通常与-n选项和用
=:用来打印被匹配的行的行号
n:读取下一行,遇到n时会自动跳入下一行
r,w:读和写编辑命令,r用于将内容读入文件,w用于将匹配内容写入到文件
练习
-
sed ‘
3a
hello’ 1.txt 向第三行
后面追加hello
,3表示行号,a表示追加 -
sed ‘/123/ahello’ 1.txt 向
内容123
后面追加hello
,如果文件中有多行包括123,则每一行后面都会添加 -
sed ‘$ahello’ 1.txt 在
最后一行追加hello
-
sed ‘1chello’ 1.txt 将
第一行替换为hello
-
sed ‘4d’ 1.txt
删除第四行
-
sed ‘1,2d’ 1.txt
删除1~2行
-
sed ‘1,2!d’ 1.txt 删除1~2
之外
的所有行 -
sed ‘/^$/d’ 1.txt 删除空行