搜索
写经验 领红包
 > 育儿

liux执行shell脚本的方式(liux执行shell)

导语:杂集:linux中执行shell脚本的三种方式,注意与source区别

Linux中执行Shell脚本的三种方法

1、 脚本文件路径[需要脚本有执行[x]权限]

2、 bash 脚本文件路径[当脚本没有执行权限or或者脚本文件未指定解释器,推荐使用]

3、 source/. 脚本文件路径

以上的路径可以是绝对/相对路径。

注意!!!:

source/.是在当前Shell中执行脚本文件

1 and 2是产生一个子Shell来执行脚本文件

知道这点对以后编写脚本及排错有很大的作用,下面有案例。

测试[x]权限:

创建一个demoShell文件

简单打印点东西

查看demoShell文件权限

文件目前是没有x权限

方式2执行

注意:

不限于bash,可以是系统内支持的所有shell

查看系统支持的shell

测试

如下图可以执行

绝对/相对路径皆可

方式3执行

绝对/相对路径皆可

source demoShell

. demoShell

可以执行

方式1执行

绝对/相对皆可

./demoShell

/root/General/myShell/demoShell

Permission denied:是因为方式1需要x权限

修改文件权限

给u[user]赋予执行的权限

chmod u+x demoShell

测试

如下图可以执行

测试方式3和方式1、2的不同之处:

下面咱们稍微规范一下

vim demoShell

以下操作就是打印name变量

在当前shell给name变量赋值

name='odysee'

注意:=两边不要有空格

方式1、2、3执行

是不是发现有些许不同了,方式1、2 name为空,方式3可以正常打印。

这就是上面谈到的,方式3[source/.]是在当前shell执行,而方式1、2是产生一个子进程shell,

子shell是无法获取当前[父]shell的值。

可以简单的把子shell和当前shell理解成内存中的A和B,A是无法获取B中的name。

大家以后在编写shell时一定要注意这点!

欢迎大家给予宝贵的意见或者建议

欢迎大家补充或者共享一些其他的方法

感谢支持

本文内容由小馨整理编辑!