2017-08-30 5 views
0

Je voudrais ré-implémenter mes propres getopts (en python si possible).Comment getopts définit une variable bash

Mon problème est que je ne comprends pas comment cela est possible:

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

#!/bin/bash 

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

Nous lisons partout sur Internet que vous ne pouvez pas définir une variable dans le processus parent. Mais ceci est fait ici et sans exportation.

Je veux comprendre comment cela fonctionne car je voudrais faire à peu près la même chose en python. Donc, ma deuxième question sera, est-il possible de faire la même chose en python?

Merci beaucoup! :)

+0

Simple: 'getopts' ne s'exécute pas dans un processus fils. – chepner

Répondre

4

getopts est un bash intégré. Comme il fonctionne dans le processus shell, il est possible de modifier les variables shell à volonté.

+0

Ok je pense que je comprends, j'ai déjà vu ce terme "bash builtin" mais sans le comprendre apparemment. Est-il possible de faire la même chose en python? Faire un python bash intégré ^^ – onda47

+0

Non. Python est un processus séparé. –

+0

Ajouter/modifier les intégrations bash nécessiterait de modifier le code source de bash et de recompiler la version modifiée. Le plus proche que vous pouvez trouver sans cela serait d'écrire une fonction bash pour faire ce que vous voulez - mais cela devrait être écrit en bash, pas en Python. –