【问题标题】:How to assign text following command to a variable in bash [duplicate]如何将命令后的文本分配给bash中的变量[重复]
【发布时间】:2014-07-24 05:08:56
【问题描述】:

TL;DR 如何将命令后面的文本分配给 bash 中的变量?

例如:/path/to/script [分配给变量的值]

我正在编写一个脚本,该脚本基本上以我喜欢的格式从 dig 和 whois 中过滤掉信息。现在,我将其设置为将用户输入分配给我要查询的域的变量。我正在使用“读取”来执行此操作。所以它看起来像:

read -p "Domain:" 域

这需要运行命令然后输入域,而我想将域放在命令之后,类似于您在执行普通 dig 或 whois 时所做的。

如: ./script google.com

我想它并不太复杂,它只是将 stdin(0) 重定向到一个变量的问题。虽然我不确定如何做到这一点。

【问题讨论】:

  • 通常只是一个普通的key=value 对,比如MYVARIABLE=$(read -p "Domain:" domain) 会将read -p ... 的结果保存回MYVARIABLE。
  • 通过“读取”的设置方式,它已经将我的输入分配给 $domain 的变量,而无需进行配对。我希望能够将域放在命令之后并让它将该值分配给一个变量,所以它是一步而不是两步。
  • 完美,谢谢@Pavel

标签: linux bash


【解决方案1】:

命令行中的参数以 $1, $2...的形式出现

【讨论】:

    【解决方案2】:

    您将 bash 中的 CLI 参数作为有序索引读取,这与 AWK 非常相似。

    所以如果你的脚本被称为better-dig.sh,在发出时:

    $ better-dig.sh google.com
    

    在您的脚本中,您必须在 $1 内捕获参数 google.com,在 $0 内捕获脚本名称。

    然后:

    #!/bin/bash
    echo "hi I'm $0 - will call dig with $1"
    dig $1 | awk 'the rest of your script'
    

    【讨论】:

      【解决方案3】:

      命令行参数已经分配给变量 1,2,3,4... 要访问它们,只需使用 $1, $2。例如

      echo "argument one is $1"  
      

      您可以选择分配给另一个变量

      site=$1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-11
        • 2011-01-19
        • 1970-01-01
        • 2020-04-22
        • 2014-07-25
        • 1970-01-01
        相关资源
        最近更新 更多