Oll*_*ers 26 shell awk shebang
我有一个我已定义的awk脚本:
#!/usr/bin/env awk
BEGIN { if (!len) len = 1; end = start + len }
{ for (i = start; i < end; i++) { print $1 } }
Run Code Online (Sandbox Code Playgroud)
我已经保存为columns与chmod +x倒是它.我想调用它,这样start和end它横越在一个文件中定义.我以为这应该工作:
cat some_file | columns -v start=2
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.救命!
ags*_*mek 51
尝试使用:
#!/usr/bin/awk -f
Run Code Online (Sandbox Code Playgroud)
作为翻译
小智 6
env是解决此问题的最简单方法:
#!/usr/bin/env -S awk -f
Run Code Online (Sandbox Code Playgroud)
添加更多选项,并确保不干扰您的参数和awk的参数:
#!/usr/bin/env -S awk -F: -f ${_} --
BEGIN {
# delete argv[1], which == ENVIRON[_]
delete ARGV[1]
} # rest of my awk program
Run Code Online (Sandbox Code Playgroud)
由于env有一个POSIX标准,这个shbang可以让你解决unixen上非标准shbang实现的困难.
编辑
写完之后我意识到'-S'是一个非POSIX兼容的FreeBSD env扩展.所以shell包装器可能是要走的路,不幸的是,就是这样.