【问题标题】:Subprocess to pass variable and replacing a variable传递变量和替换变量的子流程
【发布时间】:2022-01-09 20:04:00
【问题描述】:

我正在尝试使用这个命令:

import subprocess
a = 'foo'
result = subprocess.check_output(["cal | awk '{ gsub($1, $a); print $cal}'", "-l"], 
                                 shell=True)

我的意图是用我自己的变量更改cal 变量的第一列,a 已经具有与 $1 相同的类型,但我正在努力打印一个包含我自己条目的新日历某些地方。

如果这是个坏主意,我正在研究如何在 cal 命令中将某些日期更改为其他字符。

【问题讨论】:

    标签: python linux shell


    【解决方案1】:

    不确定你想在哪里打印新日历,但我发现你的 shell 命令没有什么问题

    1. “ ”内的变量不计算。您需要使用“”
    2. 我猜你希望从 python 脚本中获取a,而不是 shell 环境变量。要填充它,您可以使用 f 字符串。
    3. 要替换文本中的字符串,我宁愿使用sed

    解决方案:

    import subprocess
    
    python_var = "foo"
    result = subprocess.check_output(f'cal | sed "s/$shell_var/{python_var}/"', shell=True)
    print(result)
    
    $ export shell_var=mo
    $ python script.py # it prints new result variable that contains new calendar.
    

    【讨论】:

      猜你喜欢
      • 2014-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多