Je veux utiliser les aruments de la xargs
que l'indice de ce tableau, ce sont les scripts:Comment utiliser les arguments de `xargs` comme l'indice d'un tableau
1 #!/bin/bash
2 array[0]=x
3 array[1]=y
4 echo array : ${array[0]}, ${array[1]}
5 echo -n {0..1} | xargs -I index -d" " echo index,${array[index]}
et c'est la sortie:
[[email protected] scripts]$ sh test.sh
array : x, y
0,x
1,x
Vous pouvez voir que le tableau ne peut pas accepter l'index correctement, c'est toujours le premier. Comment puis-je obtenir ce genre de sortie:
array : x, y
0,x
1,y
J'ai montré l'exemple avec la commande echo
, cependant, mon vrai but est d'une autre commande, comme ceci:
echo -n {0..1} | xargs -I index -d" " somecommand ${array[index]}
pour que je veux un solution générale de cette question.
Et j'ai également essayé le parallel
au lieu du xargs
, il a le même problème.
Cela ne peut pas éventuellement travailler comme vous voulez, car le tableau n'existe que dans le shell et 'xargs' fonctionne en créant des processus fils. Le contenu de '$ {...}' dans la ligne de commande xargs n'est développé qu'une seule fois avant l'exécution de xargs. Vous devrez soit rendre le tableau disponible pour les processus enfants, soit réécrire le xargs en tant que boucle shell. –
@ WumpusQ.Wumbley OK, cependant, je veux utiliser le 'xargs' pour faire parallèle, donc une boucle de shell ne pourrait pas être une bonne solution :( –
Vous pouvez essayer de mettre le tableau comme une liste dans l'environnement et l'utiliser dans la commande commencée avec 'xargs', mais il pourrait y avoir des cas de coin ... –