2010-09-19 13 views
3

Puis-je exécuter une commande dans une autre commande dans des shells UNIX?Puis-je exécuter des commandes imbriquées ou chaînées dans le shell UNIX?

Si impossible, puis-je utiliser la sortie de la commande précédente comme entrée de commande suivante, comme dans:

command x puis command y,

où dans command y Je veux utiliser la sortie de command x?

+1

@Mohammad: J'ai supprimé la balise svn car cela n'a rien à voir avec svn, c'est une question de tuyauterie de commande générale. –

+0

Je pense que vous devez décrire le plus gros problème que vous rencontrez. Que * exactement * essayez-vous d'accomplir? –

+0

1. je veux trouver tout le dépôt .... 2. je veux trouver le répertoire entier pour tout le dépôt .... note: le résultat d'exécuter l'étape un plus de 500 repositoy donc j'ai besoin de la méthode pour exécuter l'étape deux par facile method ,,,, –

Répondre

3

Qu'est-ce que vous essayez de faire exactement? Ce n'est pas clair à partir des commandes que vous exécutez. Peut-être que si vous décrivez ce que vous cherchez, nous pouvons vous orienter dans la bonne direction. Si vous voulez exécuter une commande sur une plage de noms de fichiers (ou de répertoires) renvoyés par la commande "find", Colin a raison, vous devez regarder l'option "-exec" de "find". Si vous cherchez à exécuter une commande sur un tas d'arguments listés dans un fichier ou provenant de stdin, vous devez vérifier les commandes "xargs". Si vous voulez mettre la sortie d'une seule commande sur la ligne de commande d'une autre commande, alors utiliser "$ (commande)" (ou 'commande' [remplacer 'avec une coche)] fera le travail. Il y a beaucoup de façons de le faire, mais sans savoir ce que vous essayez, il est difficile d'être plus utile.

8

Vous pouvez utiliser les citations retour arrière pour cela.

Par exemple cette volonté chat le fichier.txt

chat ` écho file.txt `

Et ceci affichera la date

écho la date est la date ` `

Le code entre guillemets sera exécuté et remplacé par son résultat.

+0

s'il vous plaît vous pouvez me donner un exemple plus en détail –

+0

mais s'il vous plaît dans le cas suivant quelle est la solution: j'exécute "find/-type f -name fs-type -print" cette commade a trouvé tous les dépôts ... maintenant je dois trouver tout le répertoire du dépôt par cette commande "svnlook tree /var/lib/lib.org.15-01-2008/svn/repos/pstest | egrep"/$ –

+0

Ensuite, vous devez regarder l'option '-exec' de trouver –

6

Vous pouvez faire quelque chose comme;

x=$(grep $(dirname "$path") file) 

ici dirname "$path" se déroulera d'abord et son résultat sera substitué et Grep va, à la recherche du résultat de dirname dans le file

+0

mais s'il vous plaît dans le cas suivant quelle est la solution: j'exécute "find/-type f -name fs- type -print "cette commade a trouvé tout le dépôt ... maintenant je dois trouver tout le répertoire du dépôt avec cette commande" svnlook tree /var/lib/lib.org.15-01-2008/svn/repos/pstest | egrep "/$ ..... comment je peux le résoudre –

+0

@Mohammed: Ajoutez cela à votre question principale –

+0

Je veux trouver tout mon référentiel et ensuite trouver son e contenu ntire –