linuxshell文件怎么执行(linux中执行shell脚本的三种方式)
linuxshell文件怎么执行(linux中执行shell脚本的三种方式)知道这点对以后编写脚本及排错有很大的作用,下面有案例。1 and 2是产生一个子Shell来执行脚本文件以上的路径可以是绝对/相对路径。注意!!!:source/.是在当前Shell中执行脚本文件
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时一定要注意这点!
欢迎大家给予宝贵的意见或者建议
欢迎大家补充或者共享一些其他的方法
感谢支持