[英]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.