Existe-t-il un moyen naturel d'exécuter une commande dans une boucle sur un ensemble d'entrées sans utiliser explicitement une construction de boucle? Je veux dire d'une manière qui ressemble à la façon dont nous parlons en anglais.
Par exemple,
some-command -a john,jane -b doe,roe
au lieu de
for a in john jane; do
for b in doe roe; do
some-command -a $a -b $b
done
done
Pouvez-vous faire ça bash
? Y at-il un autre shell qui a une fonctionnalité comme celle-ci?
Il n'est pas nécessaire que ce soit la syntaxe exacte que j'ai indiquée ici, mais quelque chose d'idiomatique qui n'est pas aussi volumineux que la boucle imbriquée.
kubectl --context=context1,context2 --namespace=ns1,ns2 get pod
Réponses:
Vous pouvez cacher la
for
boucle dans une fonction shell. Voici une implémentation plutôt fragile basée sur l'exemple de votre question:Ensuite, la fonction serait appelée comme
loop some-command -a john,jane -b doe,roe
. Par exemple:la source
for
. il n'y a aucun moyen de rendre cette dynamique?Je cherche toujours une meilleure réponse, mais voici une "solution" provisoire.
Après avoir appris l’expansion du corset dans bash, c’est ce que j’ai trouvé. Malheureusement, vous devez échapper à tous les caractères spéciaux de la commande ou utiliser des guillemets:
Par exemple,
Encore un peu gênant. Pas sûr si d'autres coquilles ont une meilleure option.
la source