当前位置: 技术问答>linux和unix
高手们,能不能帮忙解释下这两个脚本啊
来源: 互联网 发布时间:2017-02-08
本文导语: 朋友告诉我,这是两个VI的脚本,第一个是复制的,第二个是建立表格的,这个还能理解,但是有两个问题 1.都是脚本,为什么第一个有 #!/bin/bash 而第二个没有啊,这个是干什么的,网上说的有点模糊 2.他说,第一个...
朋友告诉我,这是两个VI的脚本,第一个是复制的,第二个是建立表格的,这个还能理解,但是有两个问题
1.都是脚本,为什么第一个有 #!/bin/bash 而第二个没有啊,这个是干什么的,网上说的有点模糊
2.他说,第一个脚本,直接运行 比如 cpb a b就可以复制,而第二个脚本,运行需要加上 sh filename 或者 ./filename
这是为什么,运行方式也不相同
有没有高手回答下这两个问题,再借这两个脚本给我说下VI脚本的基础知识,在这方面知识很匮乏
|
一、针对"#!/bin/bash"的解释说明
Shell有好几种方式,bsh,csh,bash
而"#!/bin/bash"的作用,就是告诉系统,这个脚本是用bash的方式解析和执行。
第一个脚本是纯粹的unix/linux的Shell脚本,
第二个,其实不算是真正的shell脚本,因为里面只有sqlplus命令,而这个sqlplus是Oracle的,并不是Shell的,所以第二个文件前面不用加"#!/bin/bash"。
二、针对sh的说明
执行脚本的时候是否加sh,是这样来判断的:
当某个脚本,没有可执行权限的时候,需要sh+脚本名,才能执行;
当某个脚本,有可执行权限的时候,不需要sh+脚本名,直接输入脚本名+回车,就能执行;
你可以看一下两个脚本的权限应该是不同的,使用ll + 文件名,即可查看:
第一个脚本,应该是rwxrwxr--类似于这种有x的(x就是执行的权限)
第二个脚本,应该是rw-rw-rw-这样的,没有执行的权限。
Shell有好几种方式,bsh,csh,bash
而"#!/bin/bash"的作用,就是告诉系统,这个脚本是用bash的方式解析和执行。
第一个脚本是纯粹的unix/linux的Shell脚本,
第二个,其实不算是真正的shell脚本,因为里面只有sqlplus命令,而这个sqlplus是Oracle的,并不是Shell的,所以第二个文件前面不用加"#!/bin/bash"。
二、针对sh的说明
执行脚本的时候是否加sh,是这样来判断的:
当某个脚本,没有可执行权限的时候,需要sh+脚本名,才能执行;
当某个脚本,有可执行权限的时候,不需要sh+脚本名,直接输入脚本名+回车,就能执行;
你可以看一下两个脚本的权限应该是不同的,使用ll + 文件名,即可查看:
第一个脚本,应该是rwxrwxr--类似于这种有x的(x就是执行的权限)
第二个脚本,应该是rw-rw-rw-这样的,没有执行的权限。
|
#!/bin/bash 只是说,这个脚本执行的时候用/bin/bash来解析
umask 002 这个控制文件生成的权限,与脚本的执行方式无关
脚本的执行方式与有没有oracle指令没有关系
第二个脚本也可以直接执行吧
r.sh
umask 002 这个控制文件生成的权限,与脚本的执行方式无关
脚本的执行方式与有没有oracle指令没有关系
第二个脚本也可以直接执行吧
r.sh