【问题标题】:appending file contents as parameter for unix shell command附加文件内容作为 unix shell 命令的参数
【发布时间】:2012-08-08 18:06:06
【问题描述】:

我正在寻找一个 unix shell 命令来附加文件的内容作为另一个 shell 命令的参数。例如:

command << commandArguments.txt

【问题讨论】:

    标签: bash shell unix


    【解决方案1】:
    command `cat commandArguments.txt`
    

    使用反引号将使用封闭命令的结果作为外部命令中的文字

    【讨论】:

    • 请注意,如果您的任何参数中有空格,这将无法正常工作。
    • @bukzor 所以把你需要的任何引用放到文件中
    • 那行不通。试试吧。你会在你的论点上得到字面上附加的引号。
    【解决方案2】:

    xargs 采用其标准并将其格式化为 shell 命令的位置参数。它最初旨在处理较短的命令行限制,但它也可用于其他目的。

    例如,在最后一分钟内,我使用它并行连接到 10 个服务器并检查它们的正常运行时间:

    echo server{1..10} | tr ' ' '\n' | xargs -n 1 -P 50 -I ^ ssh ^ uptime
    

    这个命令管道的一些有趣的方面:​​

    • 要连接的服务器的名称取自传入管道
    • 需要tr 将每个名称放在单独的行中。这是因为 xargs 需要以行分隔的输入
    • -n 选项控制每次命令调用使用的传入行数。 -n 1 表示为每个传入行创建一个新的 ssh 进程。
    • 默认情况下,参数附加到命令的末尾。使用-I,可以指定一个标记(^),该标记将被替换为参数。
    • -P 控制同时运行的子进程的数量,极大地拓宽了有趣的可能性空间..

    【讨论】:

      【解决方案3】:

      xargs 是专门为此而构建的:

      cat commandArguments.txt | xargs mycommand
      

      如果文件中有多行,您可以使用xargs -L1 -P10 一次并行运行十个命令副本。

      【讨论】:

        猜你喜欢
        • 2013-07-18
        • 2014-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多