簡體   English   中英

從python腳本設置bash變量

[英]set bash variable from python script

我正在我的 bash 腳本中調用一個 python 腳本,我想知道是否有一種簡單的方法可以在我的 python 腳本中設置我的 bash 變量。

例子:

我的 bash 腳本:

#!/bin/bash

someVar=""
python3 /some/folder/pythonScript.py

我的python腳本:

anotherVar="HelloWorld"

有沒有辦法可以將我的 someVar 設置為 anotherVar 的值? 我正在考慮在 python 腳本內的文件中打印屬性,然后從我的 bash 腳本中讀取它們,但也許還有另一種方法。 此外,我不知道也不認為這有什么區別,但我可以用相同的名稱命名兩個變量(someVar/someVar 而不是 someVar/anotherVar)

不,當你執行python ,你啟動了一個新進程,每個進程只能訪問自己的內存。 想象一下,如果一個進程可以影響另一個進程的內存會發生什么! 即使對於這樣的父/子進程,這也將是一個巨大的安全問題。

不過,您可以制作 python print()一些東西並使用它:

#!/usr/bin/env python3

print('Hello!')

在你的 shell 腳本中:

#!/usr/bin/env bash

someVar=$(python3 myscript.py)
echo "$someVar"

當然,您還可以使用許多其他 IPC 技術,例如套接字、管道、共享內存等……但是如果沒有上下文,就很難提出具體建議。

shlex.quote()在Python 3,或pipes.quote()在Python 2,可用於生成代碼,其可以是eval ED由主叫殼。 因此,如果以下腳本:

#!/usr/bin/env python3
import sys, shlex
print('export foobar=%s' % (shlex.quote(sys.argv[1].upper())))

...被命名為setFoobar並被調用為:

eval "$(setFoobar argOne)"

...然后調用 shell 將設置一個名為foobar和值為argOne的環境變量。

暫無
暫無

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

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