shell 1 脚本入门
shell脚本
shell文件的第一行指定要使用的shell,
#!/bin/bash
#在shell中是注释,但是在shell脚本中第一行是一个例外,这里是一个声明,!号会告诉shell用哪个shell来运行脚本(这里使用的是bash shell)
创建脚本
执行脚本
脚本不能执行的原因:
1 系统执行可执行文件需要在环境变量的查找路径里PATH(使用相对路径时,如果使用绝对路径不存在这样的问题)
2 script1.sh没有可执行的权限
命令输出赋值给变量
1 反引号字符(键盘左上角)
2 $()
执行脚本
重定向
输出重定向: command > outputfile
输出重定向:> 如果目标文件不存在,创建;如过目标文件存在,覆盖
追加输出重定向:>>如果目标文件不存在,创建;如过目标文件存在,追加
输入重定向:command < inputfile
内联输入重定向: command << marker
data
marker
管道
command1 | command2
linux实际上会同时运行这两个命令,并不是第一个命令运行完了才运行第二个命令的。
管道是实时运行的,只要command1有输出,command2就会立即对此输入进行处理,不会等command1所有的都处理完,command2才去处理1的输出结果。
退出状态码
shell中运行的每个命令都是用退出状态码(exit status)告诉shell它已经运行完毕。退出状态码是一个0~255的整数值,在命令结束运行时,由命令传给shell.
正常情况下,shell脚本会以脚本中最后一个命令的退出状态码退出。
$?来保存上一个已执行命令的退出状态码。
状态码 | 描述 |
0 | 命令成功结束 |
1 | 一般性未知错误 |
2 | 不适合的shell命令 |
255 | 正常范围之外的退出状态码 |
exit可以改变shell脚本中的退出码值
退出状态码在0 - 255 之间 如果退出状态码的值超出这个范围,那么就会这个状态码的值对256取余(取模)得到的结果是88.