您可能不知道,执行shell脚本其实有三种方式,分别是:
- 重定向方式
- 参数方式
- 直接执行
重定向方式
$sh < sample.sh
缺点:不能给脚本输入任何参数。
参数方式
$sh sample.sh arg1 arg2 arg3
这种方式把脚本文件的名字以及脚本需要的参数作为bash命令的参数,以此来执行脚本。
优点:能输入参数。
另外,如果我想要在当前的shell下面执行脚本,而不要另外启动一个shell进程,则可以用 “.” 来实现:
$. sample.sh
(注意:另外几种方式都会fork一个子进程来执行shell脚本)
它等价于
$source sample.sh
直接执行
这种方式需要修改shell脚本的权限为可执行,然后直接运行该文件。$chmod a+x sample.sh
$./sample.sh
注意,这里的“.”跟第二种方式里面的“.”意思是不一样的,这里的“.”表示当前目录。因为shell遇到输入时,会从PATH环境变量指定的目录里面搜索命令,而当前目录又不在这里面,所以需要用这种方式给出该脚本文件的地址(相当于给出了绝对路径)。或者,也可以用如下方式来把当前目录添加到PATH里面(仅对当前shell执行命令有效,重新打开shell就失效了)
$export PATH="$PATH:."