Je suis (vraiment) novice en programmation fonctionnelle (en fait, je n'ai eu de contact qu'avec elle en utilisant python), mais semble être une bonne approche pour certaines tâches gourmandes en listes dans un environnement shell.
J'adorerais faire quelque chose comme ça:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
Existe-t-il un shell Unix avec ce genre de fonctionnalité? Ou peut-être une fonctionnalité permettant un accès facile au shell (commandes, env / vars, readline, etc ...) depuis python (l'idée est d'utiliser l'interpréteur interactif de python en remplacement de bash).
ÉDITER:
Peut-être qu'un exemple comparatif clarifierait. Disons que j'ai une liste composée de dir / fichier :
$ FILES=( build/project.rpm build/project.src.rpm )
Et je veux faire une tâche vraiment simple: copier tous les fichiers dans dist / ET l'installer dans le système (cela fait partie d'un processus de construction):
Utilisation de bash:
$ cp $ {files [*]} dist / $ cd dist && rpm -Uvh $ (pour f dans $ {files [*]}; do basename $ f; done))
Utilisation d'une approche "shell pythonique" (attention: c'est du code imaginaire):
$ cp [os.path.join ('dist', os.path.basename (file)) pour le fichier dans FILES] 'dist'
Pouvez-vous voir la différence ? C’est de cela que je parle. Comment ne peut-on pas encore sortir d'un shell avec ce genre de trucs intégrés? C'est une vraie douleur de gérer des listes en shell, même si c'est une tâche si courante: liste de fichiers, liste de PID, liste de tout.
Et un point vraiment, vraiment important: utiliser la syntaxe / outils / fonctionnalités que tout le monde connaît déjà: sh et python.
IPython semble être dans la bonne direction, mais il est gonflé: si le nom var commence par '$', il fait ceci, si '$$' il fait cela. Sa syntaxe n'est pas "naturelle", donc de nombreuses règles et "contournements" ( [ ln.upper() for ln in !ls ]
-> erreur de syntaxe)