【发布时间】:2014-10-14 17:11:27
【问题描述】:
我在 Eclipse 中使用 Centos 7.0 和 PyDEv。我正在尝试将 Python 中的变量传递给 c shell 脚本。但我收到错误:
这是我的 Python 脚本,名为 raw2waveconvert.py
num = 10
print(num)
import subprocess
subprocess.call(["csh", "./test1.csh"])
运行 Python 脚本时的输出/错误:
10
num: Undefined variable.
文件 test1.csh 包含:
#!/bin/csh
set nvar=`/home/nishant/workspace/codec_implement/src/NTTool/raw2waveconvert.py $num`
echo $nvar
【问题讨论】:
-
与任何其他使用子进程调用的 shell 一样。这是 99.9% 的重复。
-
为什么你的代码会互相调用?这将导致无限的子壳(递归)。
-
@alvits:我的代码没有互相调用。我在 Python 脚本中调用 Shell 脚本,只是将 Python 代码中的变量传递给 shell 脚本。
-
@luk32: 没有得到 99.9% 的重复率。您介意详细说明吗?
-
@nprak - 然后你有无限的子壳(递归)。这就是为什么。
raw2waveconvert.py通过subprocess.call()调用test1.csh。test1.csh通过$()调用/home/nishant/workspace/codec_implement/src/NTTool/raw2waveconvert.py以将stdout分配给nvar。当raw2waveconvert.py执行时,它将通过subprocess.call()调用test1.csh,而subprocess.call()又调用raw2waveconvert.py。它永远不会结束。