2017-08-30 19 views
0

可能であれば、自分自身のgetoptsを再実装したいと思います。getoptsがbash変数を設定する方法

私の問題は、私はこれが可能であるかを理解していないということです。

# The call of the following script 
./script -h 

#!/bin/bash 

getopts 'h' TEST # output nothing 
echo $TEST # output h 
env | grep # output nothing 

私たちは、すべてあなたが親プロセスに変数を設定することはできませんインターネット上でお読みください。しかし、これはここで、輸出なしで行われます。

私はPythonでほぼ同じようにしたいと思っていますが、どのように動作するのか理解したいと思います。だから私の2番目の質問は、それは同じことをPythonで行うことが可能ですか?

ありがとうございました! :)

+0

単純です: 'getopts'は子プロセスで実行されていません。 – chepner

答えて

4

getoptsは、bashビルトインです。シェルプロセス内で動作するので、自由にシェル変数を変更することができます。

+0

私は理解していると思います。私はすでにこの用語を「組み込みのbash」と見ていますが、明らかに理解していません。 Pythonで同じことが可能ですか? Python bashを組み込みます^^ – onda47

+0

いいえ、Pythonは別のプロセスです。 –

+0

bash組み込み関数を追加/変更するには、bashソースコードを編集し、変更されたバージョンを再コンパイルする必要があります。あなたが望むことをするためにbash関数を書いてしまうのが最も近いでしょうが、Pythonではなくbashで書かなければなりません。 –

関連する問題