【问题标题】:Linux scripting: Passing parametersLinux 脚本:传递参数
【发布时间】:2012-05-09 14:56:48
【问题描述】:

我是脚本新手,需要很多帮助来了解如何加载将由参数传入的文本文件。恐怕您将不得不真正愚蠢地回答。请像我 10 岁一样解释!

例如,如何编写一个接受两个参数的脚本,一个文件路径和一个整数。

另外你如何运行脚本?你能打电话给script.sh -f data.txt

【问题讨论】:

  • 如果您需要“很多帮助”,您需要read the manual。如果您有更具体的问题,StackOverflow 将是寻求帮助的好地方。

标签: linux scripting awk


【解决方案1】:

您可以通过操作ARGC and ARGVBEGIN 块中的参数列表中提取您的整数来做到这一点。您可以将脚本放在第一行为#!/usr/bin/awk -f 的文本文件中,然后使用chmod a+x 使该文件可执行。

【讨论】:

    【解决方案2】:

    你能详细解释一下你的要求吗?

    我假设您希望从给定文件中提取第 N 列。您无需在 AWK 中解析命令行参数,只需从 sh(1) 本身传递它们即可。

    # foo.sh
    awk "{ print $"$1" }" $2
    

    在这里,我从 AWK 中转义以获取第一个参数,即位置编号。 如果你觉得这太混乱了,你可以操纵ARGCARGV。阅读awk(1)

    希望对您有所帮助。

    【讨论】:

    • 是的,感谢您的帮助。我正在尝试编写一个接受整数 N 并从也传入的文本文件中提取第 N 列的脚本。我现在特别坚持的部分是我想编写一个识别 getopts 的脚本例如 -f 和 -s。你对如何做到这一点有什么建议吗?
    • @user1136076 AFAIK AWK 不能移植,你可以使用getopt(1) 和我之前提到的使用sh(1) 来传递awk(1) 的参数。
    • 您应该使用-v 选项将shell 变量值传递到AWK 变量中,而不是将shell 变量直接嵌入到AWK 脚本中。
    【解决方案3】:

    GNU AWK (gawk) 手册的This page 描述了如何像getopt 那样处理选项。

    在脚本中包含该页面上显示的函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 2012-03-15
      相关资源
      最近更新 更多