执行shell脚本的三种方式

时间:2022-10-15 15:38:46

您可能不知道,执行shell脚本其实有三种方式,分别是:

  1. 重定向方式
  2. 参数方式
  3. 直接执行
下面分别比较一下每种做法(都以在linux的bash执行脚本sample.sh作为例子)

重定向方式

$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:."