簡體   English   中英

將 shell 變量傳遞給 shell 腳本中的內聯 python

[英]Passing a shell variable to inline python in a shell script

我有一個簡單的 shell 腳本,我希望能夠將變量傳遞給我將編寫的一些內聯 python。 例如像這樣

funny=879
echo $funny
python -c "
print(f"hello {$funny}")
"

然而,這打印

879
  File "<string>", line 2
    print(fhello
               ^
SyntaxError: unexpected EOF while parsing
(pipeline) $ 

關於我可能做錯了什么的任何想法? 我知道我將變量設置正確,因為當我回顯時它會打印出變量,因此它肯定設置正確,但由於某種原因 python 腳本無法使用它。

這是因為您使用的是外部雙引號。

python -c "print(f"hello {$funny}")"

變成:

python -c print(fhello {879})

所以 python 被傳遞了 2 個單獨的字符串。

內部雙引號需要轉義才能傳遞到 python。

$ funny=879; python3 -c "print(f\"hello $funny\")"
hello 879

而不是搞亂引用 - 如果您導出變量,您可以使用os.environ字典從 python 訪問它們。

$ export funny=879; python -c 'import os; print(os.environ["funny"])'
879

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM