Linux系统怎么执行Shell脚本(linux,shell,开发技术)

时间:2024-05-05 12:23:43 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

1)bash script-name或者sh script-name

这是当脚本文件本身没有可执行权限(即文件权限属性x位为-号)时常使用的方法,或者脚本文件开头没有指定解释器时需要使用的方法。推荐使用这种方法。

(2)path/script-name或者./script-name

指在当前路径下执行脚本(脚本需要有执行权限),需要将脚本文件的权限改为可执行(即文件权限属性为x位)。具体方法为:chmod a+x script-name。然后通过执行脚本绝对路径或者相对路径就可以执行脚本了。注意:在生产环境中,运维人员由于忘记为该脚本设置可执行权限,然后直接使用,导致出错。因此,推荐第一种 bash script-name。

(3)source script-name或者. script-name

source或者“.”命令的功能是:读入脚本并执行脚本,即在当前Shell中执行source或“.”加载并执行的相关脚本文件的命令及语句,而不是产生一个子Shell来执行文件中的命令。

注意:这是和其他几种执行shell方式的最大不同。

举个栗子:

新建一个文件test_sh.sh,不给它赋予任何可执行的权限x。

Linux系统怎么执行Shell脚本

编辑内容如下:

Linux系统怎么执行Shell脚本

文件以及文件中内容与常见的shell不同之处在于,这里的文件没有赋予可执行权限以及在文件内容中的首行中没有添加#!/bin/bash。我们现在用上述介绍的几种方式来测试下效果。

第二种方式 ./script-name ,执行效果如下:

Linux系统怎么执行Shell脚本

报权限拒绝,Permission denied,此时,我们只要更改文件的属性为可执行即可。

执行第一种bash script-name,效果如下:

Linux系统怎么执行Shell脚本

可以成功执行,输出:hello。但是,我们输入命令:echo $name,发现如下:

Linux系统怎么执行Shell脚本

name的值是空的。不难理解,bash script-name是产生了一个子进程shell,而我们当前的操作还在父shell中因此得不到该变量值。

执行第三种方法. test_sh.sh,效果如下:

Linux系统怎么执行Shell脚本

可以成功的输出变量的值。这是因为source script-name和. script-name是将script-name中的内容直接加载到当前的shell,因此能够输出当前变量的值。

刚才第二种方式我们执行失败,现在我们通过chmod a+x script-name,然后再次执行上述命令,查看效果:

Linux系统怎么执行Shell脚本

注意:该种方式也是产生了一个子进程Shell,因此echo $name仍然找不到该变量。

补充知识点:

一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为:

#!/bin/bash

#!/bin/sh

注意:

(1)在Shell中如果一行的第一个字母是#,则是注释,但是上面两个是写在第一行,所以不是脚本注释行,如果写在某个命令之后,则变成注释行。

(2)sh为bash的软链接,大多数情况下,脚本的开头使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使用“#!/bin/bash”。

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:Linux系统怎么执行Shell脚本的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Linux系统lsof命令怎么用下一篇:

16 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18