繁体   English   中英

如何将 python 脚本变量传递给 csh 脚本?

[英]how to pass python script variables to a csh script?

我有一个 python 脚本,它要求用户选择多个选项之一,我想在 csh 脚本中使用所选变量来进一步处理。 当我尝试使用 shell 脚本中的 python 变量时,出现未定义的变量。

这里有一些参考:

有一个 python 脚本 choices.py 其 output 是这样的:

Select a Choice:
1) choice1
2) choice2
3) choice3
Choice: 1
Selected Choice: choice1

然后在我的 csh 脚本中调用 python 脚本并尝试使用 choice 变量进行后续操作。 是这样的:

python choices.py
echo "$choice"

得到错误:

choice: Undefined variable.

有没有办法让 python 变量成为全局变量,以便它可以在其他地方使用?

预期的:

choice1

得到错误:

choice: Undefined variable.

Csh 无法知道现在已经不存在的 Python 进程中存在哪些变量,就像您无法知道 C 编译器内部存在哪些 C 变量一样。

一个常见的安排是让您的脚本 output 成为标准 output 的值,并让 shell 捕获:

set choice=`python choices.py`
echo "$choice"

当然,如果您的脚本已经需要标准的 output 来做其他事情(比如与用户通信),您需要一种稍微不同的方法,也许它可以将值写入文件? 并让调用者读取该文件?

更切题的是,大约 30 多年前,C shell 基本上已被所有理智的用户抛弃,转而支持与 Bourne 兼容的 shell。 您通常不想使用csh语法编写脚本,除非您编写它们只是为了您自己的私人用途,并且您有一种非常奇怪的受虐癖。 尽管 arguments 中的某些内容有点可疑,但说服人们切换的标准参考是Csh,它被认为是有害的; 即使您忽略了一些虚假的结论,结论仍然与理智的 arguments 有说服力。 或许另见https://www.grymoire.com/Unix/CshTop10.txt

这是标准 POSIX sh语法中的相同构造:

#!/bin/sh
choice=$(python choices.py)
echo "$choice"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM