Linux awk shebang不';行不通
我有一个简单的Linux awk shebang不';行不通,linux,bash,shell,unix,awk,Linux,Bash,Shell,Unix,Awk,我有一个简单的awk程序: #!/usr/bin/awk -f BEGIN {print "work already!"} 如果我以以下方式运行它: awk -f panic 在(osx)终端上,它工作。但如果我尝试将其作为脚本运行,则会失败: . panic -bash: BEGIN: command not found 我使用哪个awk检查了awk的位置,它确实位于/usr/bin/awk。知道它为什么不工作吗?以/panic的形式运行它,而不是。panic,因为后者与运行源panic
awk
程序:
#!/usr/bin/awk -f
BEGIN {print "work already!"}
如果我以以下方式运行它:
awk -f panic
在(osx)终端上,它工作。但如果我尝试将其作为脚本运行,则会失败:
. panic
-bash: BEGIN: command not found
我使用
哪个awk
检查了awk的位置,它确实位于/usr/bin/awk
。知道它为什么不工作吗?以/panic
的形式运行它,而不是。panic
,因为后者与运行源panic
相同,后者不会执行您想要的操作。请参见man source
要将文件作为脚本运行,您必须键入:
./<script>
/
编辑:
正如William Pursell所指出的,
不是源代码的别名,但恰恰相反
。不是源的别名。是在当前shell中运行另一个脚本的sh标准命令。source是一个源于csh的命令,被许多sh克隆用作..的别名。。如果源代码不被视为可憎的东西,那么它就是…的别名,而不是相反
不是源代码的别名
是在当前shell中运行另一个脚本的sh
标准命令source
是一个源于csh
的命令,被许多sh
克隆用作
的别名。如果source
不被视为讨厌的东西,那么它是
的别名,而不是相反。我的答案是首先…@williampersell出于兴趣,source命令有什么问题?有没有更好的方法达到同样的效果?还是你只是说这是不必要的重复?source命令本身并没有什么问题,只是它是
的别名,我觉得说
是源代码的别名是不正确的。但是,严格地说,根据开放组标准()“如果命令名与下表中列出的实用程序名匹配,则结果是未指定的。”并且source
是列出的命令之一。也就是说,它是非标准的,在技术上使用它会导致未指定的行为。但实际上,它几乎适用于您可能使用的所有shell?