亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我們如何從python調用bash函數

我們如何從python調用bash函數

慕容3067478 2021-09-11 20:08:35
假設我有一個 bash 函數,我將它輸入到 shell 中。# cat sample.sh function func(){    echo "Custom env : $CUSTOM_ENV"}現在我在 bash shell 中獲取這個腳本: #source sample.sh然后我定義:export CUSTOM_ENV="abc"然后從 bash shell 調用 func(),它顯示:#funcCustom env : abc現在,如果我從同一個 shell 調用 python 腳本,我想從 python 腳本調用函數 func() 。無論如何要實現這一目標?我試過的:試過 os.system('func') - 不起作用試過 subprocess.check_output('func', shell=True, env=os.environ.copy()) - 不起作用任何指導?
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

您需要export該功能(帶有-f選項):


$ function func()

> {

>     echo "Custom env : $CUSTOM_ENV"

> }

$ export -f func

$ export CUSTOM_ENV="abc"

$ python

Python 2.7.10 (default, Oct  6 2017, 22:29:07) 

[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> import os

>>> os.system('func')

Custom env : abc

0

請注意,exporting 函數(和變量)會將函數和變量的副本導出到它們從中導出的 shell 的子進程。它們在父(或兄弟)進程中不可用。此外,在子流程中更改它們不會影響原始副本。


此外,導出函數是僅用于 bash 的事情,因此這僅在父 shell 和從 python 啟動的 shell 都是 bash 時才有效。在 bash 不是默認值的操作系統上(例如最近發布的 Ubuntu 和 Debian),您需要明確運行 bash,否則它將無法運行。這一切使它變得相當脆弱,正如@triplee 指出的那樣,這不是一個好主意。


查看完整回答
反對 回復 2021-09-11
  • 3 回答
  • 0 關注
  • 237 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號