Shell脚本执行的三种方式 | 您所在的位置:网站首页 › shell脚本执行可执行文件的方法有哪些 › Shell脚本执行的三种方式 |
参考:https://blog.csdn.net/timchen525/article/details/76407735 bash script-name 或 sh script-namepath/script-name 或 ./script-namesource script-name 或 . script-name(1)bash script-name 或 sh script-name 这是当脚本文件本身没有可执行权限(即文件权限属性x位为-号)时常使用的方法(不管脚本有无可执行权限都可以通过这种方式运行),或者脚本文件开头没有指定解释器时需要使用的方法(这种脚本运行方式的bash或sh意思就是给脚本指定了命令解释程序,而脚本中第一行的#!/bin/bash或#!/bin/sh与此作用相同)。推荐使用这种方法。 (2)path/script-name 或 ./script-name 执行条件有二:脚本文件被赋予了执行权限;脚本文件第一行指定了命令解释程序(一般为#!/bin/bash) 注意:在生产环境中,运维人员由于忘记为该脚本设置可执行权限,然后直接使用,导致出错。因此,推荐第一种 bashscript-name。 (3)source script-name 或 . script-name source或者 “.” 命令的功能是:读入脚本并执行脚本,即在当前Shell中执行source或 “.” 加载并执行的相关脚本文件的命令及语句,而不是产生一个子Shell来执行文件中的命令。 注意:这是和其他集中执行shell方式的最大不同。 举个栗子: 新建一个文件test.sh,不给它赋予任何执行权限 这个脚本文件与常见的shell不同之处在于,这里的文件没有赋予可执行权限以及在文件内容中的首行中没有添加#!/bin/bash。 我们现在用上述介绍的几种方式来测试下效果。 第一种:bash test.sh可以执行脚本内容,但是脚本中设置的name变量却输出为空 不能执行脚本内容,赋予权限后可以执行,但是name变量还是输出为空 test.sh 没有执行权限的情况下可以执行,并且成功输出name的值 补充知识点: 一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为: #!/bin/bash 或 #!/bin/sh 注意: (1)在Shell中如果一行如果以 “#!” 开头,就是在指明命令解释程序(解释器),如果第一行仅以 “#” 开头,就是一个普通的注释,除第一行之外的其他行,只要第一个字符是 “#” 那就都是注释。 (2)sh为bash的软链接,大多数情况下,脚本的开头使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使用“#!/bin/bash”。二者的区别是有没有开启posix模式,具体参考:https://blog.csdn.net/wangxin6722513/article/details/44922695 |
CopyRight 2018-2019 实验室设备网 版权所有 |