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