脚本解释器#!后可跟命令绝对路径加参数
前面学习awk时第一次碰见这种用法,觉得有意思,所以就整理了这篇文章,感兴趣的可以了解一下
脚本解释器#!后跟命令绝对路径加参数这种形式等价于直接加执行该命令
我们这里使用shell中的awk文本处理工具来做例子
awk -f awk命令文件 处理文件
调用的命令 :awk -f awk命令文件 file
[root@localhost awk]# cat scr.awk
/^$/{print "This is a blank line."}
[root@localhost awk]# awk -f scr.awk input
This is a blank line.
This is a blank line.
This is a blank line.
这个命令表示使用awk命令文件中的命令去处理这个file文件
了解了原命令之后我们下面就来演示一下
把它写成脚本调用的过程:
1.我们可以使用which命令看到awk命令在系统中的awk的可执行文件位置
which命令的作用:
在PATH变量(系统环境变量)指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
[root@localhost awk]# which awk
/usr/bin/awk
2.然后我们看看这个文件使用ll -l命令看看这个文件是否做了软连接(如果做了软连接,我们要找awk命令原文件的绝对路径)
[root@localhost awk]# ll -l /usr/bin/awk
lrwxrwxrwx. 1 root root 4 Jan 29 21:18 /usr/bin/awk -> gawk
[root@localhost awk]# ll -l /usr/bin/gawk
-rwxr-xr-x. 1 root root 428576 Jan 25 2014 /usr/bin/gawk
3.我们发现了awk命令在系统中的位置,将这个路径前加上#!写在脚本文件的第一行
[root@localhost awk]# cat scr.awk
#!/usr/bin/awk -f
#该命令的执行时的文件和位置,执行该命令且加上该命令的参数 -f表示调用的命令
/^$/{print "This is a blank line."}
4.我们给脚本文件添加执行权限,然后执行该脚本
[root@localhost awk]# chmod +x scr.aw
[root@localhost awk]# ./scr.awk input
This is a blank line.
This is a blank line.
This is a blank line.
我们可以看到结果和直接使用命令操作的结果相同