; shell脚本执行 | Linux运维部落

shell脚本执行

shell脚本执行

对于我们这些小白而讲,shell脚本无疑是最令人头疼的事了,我再这里讲一下shell脚本运行要注意的哪些。

shell脚本就好像c++,java代码一样,按照从上到下然后从左到右的顺序执行。就像我们日常读书一样。如果shell命令遇见了子进程(嵌套代码),程序就会跟着顺序进入子进程。当子进程完成后,回到父进程,并且把父进程所需要的参数提交。

shell执行的方式

shell一共有4种执行方式

(1)bash file 或者 sh file 当脚本写好以后,文件创建时默认是没有执行的,运行脚本需要执行权限,所以直接运行就不行。要想执行就需要用这种方法。 示例:


当脚本开头没有解释器的时候,这就可以用这种方法来执行。

(2)绝对路径或者./ file 执行文件再当前目录下执行,可以直接用./ file去执行这个文件。其中 . 代表的是父目录,在这表现为相对路径。如果执行文件不再该目录下,那就使用绝对路径。在这种方法执行文件的时候用户必须附有该执行权限。

chmod +x file

这条命令可以给用户加上执行权限。然后文件内容头要有解释器。



(3)可以用管道或者重定向的方法

sh<file 或者 file|sh

这种方法虽然感觉跟第一种方法一样,但是好多时候可以用这种方法做到精简代码。

(4)source file 或者 . file ,如果脚本里面有嵌套,那么就会生成一个子进程。shell脚本中的各个代码按顺序执行,再执行时会创建一个进程。当语句中嵌套其他的有其他脚本,那么这些语句默认情况下会开启一个子进程。而用这两个命令不会打开子进程,它会直接在这个父进程中运行。所以这两个命令可以将其嵌套程序的变量,返回值直接传递到父进程中使用。要注意的是. 后面一定要有空格。

pstree -p 查看进程

为了方便我们查看进程,我们在子脚本中设置休眠时间

sleep 设置休眠时间


用./3.log命令运行后车看子进程 

用source 3.log运行的结果


其中4.log是3.log的嵌套函数,由结果图可以看出,该命令没有开启子进程

原创文章,作者:phosphor,如若转载,请注明出处:http://www.178linux.com/77563

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1660809109@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班