【问题标题】:How to use Unix to pass all lines as parameters to a script如何使用 Unix 将所有行作为参数传递给脚本
【发布时间】:2011-11-16 23:49:31
【问题描述】:

我有一个名为 pids.txt 的文件,其中包含如下几行:

123
456
789

然后,我编写了一个 Python 脚本,它对每一行都执行一些操作。 Python 脚本运行如下:

my_script.py 123 456 789 -a "something here" -b "something else"

我被困在要运行 Unix 命令的部分,将 pids.txt 的输出通过管道传输到 my_script.py。我认为你必须对猫做点什么?

(这不起作用)

cat pids.txt | ./myscript.py -a "something here" -b "something else"

有什么想法吗?

【问题讨论】:

    标签: bash unix cat


    【解决方案1】:

    您可以使用$(command) 构造(相当于反引号:`command`):

    ./myscript.py $(cat pids.txt) -a "something here" -b "something else"
    

    构造 $(command) 运行 command 并替换放置构造的 command 的标准输出。

    Bash 还为您提供$(< file) 构造:

    ./myscript.py $(< pids.txt) -a "something here" -b "something else"
    

    这会读取pids.txt 文件并将其内容替换为$(&lt; ...) 构造。 (感谢 glenn jackman

    【讨论】:

    • 对于 bash,您可以避免使用在 shell 中运行的 $(&lt; pids.txt) 调用 cat。
    • @Jeff,注意$(&lt; pids.txt) 部分没有被引用,因此每一行都将作为单独的参数传递给您的python 程序。如果你要写 `"$(
    猜你喜欢
    • 2013-07-10
    • 2011-05-30
    • 1970-01-01
    • 2013-12-12
    • 2013-08-03
    • 1970-01-01
    • 2017-11-30
    • 2017-12-09
    • 1970-01-01
    相关资源
    最近更新 更多