2017-08-30 75 views
0

我想重新实现我自己的getopts(如果可能,请在python中)。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中做大致相同的操作。所以我的第二个问题是,是否有可能在python中做同样的事情?

非常感谢! :)

+0

简单:'getopts'没有运行在子进程中。 – chepner

回答

4

getopts是一个bash内建。由于它在shell进程中运行,因此欢迎随意更改shell变量。

+0

好吧我想我明白了,我已经看到这个术语“bash builtin”,但没有明白地理解它。是否有可能在Python中做同样的事情?做一个Python bash内建^^ – onda47

+0

不。Python是一个单独的过程。 –

+0

添加/更改bash内建函数需要编辑bash源代码并重新编译修改后的版本。最接近你可以没有这将是写一个bash函数来做你想做的 - 但它必须写在bash中,而不是Python。 –