簡體   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