Skip to content

Latest commit

 

History

History
77 lines (48 loc) · 2.57 KB

File metadata and controls

77 lines (48 loc) · 2.57 KB

基本知识

Bash 脚本就是一个包含一系列 Bash 命令的文件。Shell 读取这个文件,然后执行文件中的所有命令,就好像这些命令已经直接被输入到了命令行中一样。所有能够在命令行中完成的任务也能够用脚本来实现。

注释

脚本中,#表示注释。

# This is our first script.
echo 'Hello World!'

echo 'Hello World!' # This is a comment too

shebang

shebang用来指定执行脚本的二进制文件,通常在脚本的第一行。

#!/usr/bin/bash

上面命令指定,执行脚本的二进制文件是/usr/bin/bash

这种写法有一个问题,就是如果用户的bash可执行文件不在/usr/bin,脚本就无法执行了。为了解决这个问题,可以写成下面这样。

#!/usr/bin/env bash

env

env命令总是在/usr/bin里面,它会在指定环境之中运行一个程序。上面命令的意思是,在bash里面运行下面的脚本。如果要执行Node脚本,可以写成下面这样。

#!/usr/bin/env node

#!/usr/bin/env NAME使得Shell查找,$PATH环境变量里面第一个匹配的NAME。如果你不知道某个命令的路径,这样的写法就很有用。

这样写的好处是,只要bash的路径是在$PATH路径里面,就总是能找到它。

env命令的参数。

  • -i, --ignore-environment:不带环境变量启动
  • -u, --unset=NAME:从环境变量中删除一个变量
  • --help:显示帮助并退出
  • --version:输出版本信息并退出

下面是一个例子,新建一个不带任何环境变量的Shell。

$ env -i /bin/sh

exit

exit命令用于终止当前脚本的执行,并向Shell返回一个退出码。

$ exit

上面命令中止当前脚本,将最后一条命令的退出状态,作为整个脚本的退出状态。

exit命令后面可以跟参数,该参数就是退出状态。

$ exit 1

退出时,脚本会返回一个退出值。脚本的退出值,0表示正常,1表示发生错误,2表示用法不对,126表示不是可执行脚本,127表示命令没有发现。如果脚本被信号N终止,则退出值为128 + N。简单来说,只要退出值非0,就认为执行出错。

上一条命令的退出状态,可以用系统变量$?查询。使用这个命令,可以知道上一条命令是否执行成功。

exitreturn命令的差别是,return命令是函数的退出函数,并返回一个值给调用者。如果在函数之中,调用exit,则退出函数,并终止脚本执行。