【问题标题】:How to add variables to Bash script in Python subprocess.call [duplicate]如何在 Python subprocess.call 中向 Bash 脚本添加变量 [重复]
【发布时间】:2021-04-07 01:55:58
【问题描述】:

我有一些 Python 2.7 代码,它接受用户的输入并将其存储为变量。

我想执行一个 test.sh Bash 脚本,但使用我创建的 Python 变量。

例如,我想要完成的事情:./test.sh -a "VARIABLE1" -b "VARIABLE2" -c "VARIABLE3" -a、-b 和 -c 是 Bash 选项,变量是它们的代码。

这是我目前的代码:

Name = input("What is your name?")
Age = input("What is your age?")
City = input("What is your city?")

subprocess.call(['sh', './test.sh'])

【问题讨论】:

  • 这不行,打印输出就是“0”。

标签: python bash python-2.7 shell


【解决方案1】:

你可以使用shlex:

test.sh:

if [[ ${#@} > 0 ]]; then
  while [ "$1" != "" ]; do
    case $1 in
      -u | --user )
        shift
        user="$1"
        ;;
      -a|--age )
        shift
        age="$1"
        ;;
    esac
    shift
  done
fi

echo "$user:$age"

test.py:

import subprocess 
import shlex

Name = input("What is your name? ")
Age = input("What is your age? ")

cmd = "bash test.sh -u " + Name + " -a " + Age 
subprocess.call(shlex.split(cmd))
$ python2 test.py 
What is your name? 'vinzz'
What is your age? '25'
vinzz:25

【讨论】:

  • 谢谢。有没有办法在 test.py 脚本中完成这一切?
  • 使用 test.py 完成所有操作是什么意思?将 bash 脚本转换为 python ?
  • 我希望 Bash 脚本的内容保持原样。只需要带有变量的 py 脚本以特定方式调用 Bash 脚本。即 ./test.sh -a "VARIABLE1" -b "VARIABLE2" -c "VARIABLE3"
  • 这有什么问题? cmd = "bash test.sh -u " + Name + " -a " + Age 它正在做你想做的事。
  • 有没有办法验证 subprocess.call 的输出?当我打印时,我只看到“0”
猜你喜欢
  • 2013-03-02
  • 2022-01-20
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 2014-06-12
相关资源
最近更新 更多