【问题标题】:Passing variables/values from python script to shell script将变量/值从 python 脚本传递到 shell 脚本
【发布时间】:2018-10-04 17:35:51
【问题描述】:

这是我的用例:我有一个 python 脚本,它返回远程服务器的名称和配置文件中的文件路径。我需要一种方法来使用这两个或多个参数化变量及其值作为我的 shell 脚本的输入,然后通过连接到远程服务器来同步文件。任何提示表示赞赏。

【问题讨论】:

  • 使用管道 (|)
  • @wpercy -Pipe(|) 在 shell 命令中工作。这里的变量和相应的值在 python 脚本(字典对象)中,我需要输出作为我的 bash 脚本的输入。我应该只在我的 python 脚本中调用 bash 脚本吗?
  • Python 脚本不能“返回”任何东西;它只能写入标准输出。如果您的 bash 脚本可以将其从标准输入中读取的内容解析为适当的值,则管道是合适的。目前,您的问题太模糊,无法提供适当的答案。
  • 不,您应该从命令行调用您的 python 脚本,将您的 dict 中的值输出到标准输出并将它们通过管道传输到 bash 脚本中

标签: python bash parameter-passing


【解决方案1】:

看看这是不是你要找的。我有一个 python 脚本,它打印出 3 行,每行都有不同的值。对你来说,a[0] 是服务器,a[1] 是第一个文件,a[2] 是第二个文件。行数是任意的,这适用于任何数字,每行一个,并且文件名中允许有空格。

> readarray a < <(python -c 'print "myserver:8080"; print "file1 which may have spaces"; print "another file"')
> echo ${a[0]}
myserver:8080
> echo ${a[1]}
file1 which may have spaces
> echo ${a[2]}
another file

【讨论】:

  • 这很聪明!非常感谢,让我试试看是否可行,否则会用详细的问题和代码 sn-ps 来解决更多问题。