为了账号安全,请及时绑定邮箱和手机立即绑定

如何为awk使用多个参数(即#!)

如何为awk使用多个参数(即#!)

拉莫斯之舞 2019-07-19 18:39:26
如何为awk使用多个参数(即#!)我想执行一个呆子脚本--re-interval用弹簧弹。“天真”的方法#!/usr/bin/gawk --re-interval -f... awk script goes here不起作用,因为gawk是用第一个参数调用的。"--re-interval -f"(没有在空格周围分开),它不理解。有解决办法吗?当然,您不能直接调用gawk,而是将其包装到一个可以拆分第一个参数的shell脚本中,或者创建一个shell脚本,然后调用gawk并将该脚本放入另一个文件中,但是我想知道在一个文件中是否有什么方法可以做到这一点。在不同的系统中,谢邦线的行为是不同的-至少在西格温它不会将参数拆分为空格。我只关心如何在这样的系统上执行此操作;脚本不应该是可移植的。
查看完整描述

3 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

这似乎适用于我(G)awk。


#!/bin/sh

arbitrary_long_name==0 "exec" "/usr/bin/gawk" "--re-interval" "-f" "$0" "$@"



# The real awk program starts here

{ print $0 }

注意#!跑/bin/sh,所以这个脚本首先被解释为一个shell脚本。


一开始,我只是尝试"exec" "/usr/bin/gawk" "--re-interval" "-f" "$0" "$@",但是awk把它当作一个命令,无条件地打印出每一行输入。所以我才把arbitrary_long_name==0-它应该总是失败的.你可以用一些乱七八糟的字符串代替它。基本上,我在awk中寻找一个不会对shell脚本产生不利影响的假条件。


在shell脚本中,arbitrary_long_name==0定义一个名为arbitrary_long_name并将其设置为等于=0.


查看完整回答
反对 回复 2019-07-19
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

我遇到了同样的问题,没有明显的解决方案,因为白空间的处理方式(至少在Linux上是如此)。

但是,您可以在一次大爆炸中传递几个选项,只要它们是短期期权他们可以串连(GNU方式)。

例如,你不能

#!/usr/bin/foo -i -f

但你可以

#!/usr/bin/foo -if

显然,这只在选项有短期等效且不带参数的情况下才有效。


查看完整回答
反对 回复 2019-07-19
  • 3 回答
  • 0 关注
  • 1190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信