script.sh:
cmd=( python script.py "'$param1'" "'$param2'" )
echo "before python script"
eval "${cmd[@]}"
echo "after python script"
script.py:
print "entering python script"
...
prompt the user
我的问题是script.py在完成之前没有显示输出。这是一个问题的原因是因为script.py包含一个提示,供用户选择,所以我需要立即显示输出。每次我运行它虽然它显示“在脚本之前”,没有提示显示,我盲目地输入我的输入,并且只有当它完成时才会出现提示并且其余的python脚本输出出现。
答案 0 :(得分:0)
bash命令:
cmd=( python script.py "'$param1'" "'$param2'" )
表示:
运行
python script.py
将$param1
和$param2
的值作为参数传递,每个值都用单引号括起来,并捕获输出(stdout
)。命令完成后,将捕获的输出拆分为单词并将它们放入shell数组变量cmd
中,每个元素一个单词。
通常,如果您需要使用提示,则可以将其写入stderr
,以防重定向或捕获stdout
,如在命令行中一样。否则,提示将被视为任何其他输出,您将永远不会看到它。