J'essaie de construire une interface utilisateur de sélection de cerises pour Git. La sortie de git log
produit des lignes comme celle-ci:
e9dfe65 "Alice, 78 minutes ago - Thumbnails are now 300x300" no
3b780ba "Bob, 3 hours ago - new intro page" no
7ba8120 "Charles, 20 hours ago - add cutoff date for widget timing" no
Je veux passer ceci comme arguments à un dialogue pour une liste de contrôle:
dialog --checklist "Choose commits to cherry-pick:" 0 0 0 ...
Malheureusement, je n'arrive pas à comprendre comment passer la sortie de git-log en tant qu'argument pour dialoguer.
Les autres arguments de dialogue sont 3-tuples, tels que <commit> <message> <selected>
, d’où le formatage de git-log ci-dessus. Je n'arrive pas à comprendre l'expansion.
Quelques tests:
$ git log ... >temp
$ args="$(cat temp)" ; echo $args[2]
9 // WRONG
$ args=`cat temp` ; echo $args[2]
9 // WRONG
$ args=(`cat temp`) ; echo $args[2]
"Alice, // WRONG
Mise à jour: le résultat correct pour $args[2]
devrait être Alice, 78 minutes ago - Thumbnails are now 300x300
.
"
entrée en tant que cas spécial pour inclure une chaîne pouvant contenir des espaces. Ce comportement est perdu lorsque les guillemets sont lus à partir de la sortie d'un programme, ce qui est similaire à l'écriture\"
sur la ligne de commande.