2010-04-22 4 views
4

Je demande donc ce script PHP à partir de la ligne de commande:Utilisez la sortie d'une commande en entrée de la commande suivante

/usr/bin/php /var/www/bims/index.php "projects/output" 

et sa sortie est:

file1 file2 file3 

Ce que je voudrais faire est d'obtenir cette sortie et alimentation à la « rm » commande mais je pense que je ne suis pas faire:

/usr/bin/php /var/www/bims/index.php "projects/output" | rm 

Mon but est de supprimer tout fichier nomme les sorties du script PHP. Quelle devrait être la bonne façon de faire cela?

Merci!

Répondre

8
/usr/bin/php /var/www/bims/index.php "projects/output" | xargs rm 
+0

qui a fonctionné! De quoi parle xargs? Merci! – r2b2

+0

man xargs: "xargs - crée et exécute des lignes de commande à partir de l'entrée standard". Vous devriez lire cette page de manuel;) –

3

vous pouvez essayer xargs

/usr/bin/php /var/www/bims/index.php "projects/output" | xargs rm 

ou tout simplement utiliser une boucle

/usr/bin/php /var/www/bims/index.php "projects/output" | while read -r out 
do 
    rm $out 
done 
2

Solution la plus simple:

rm `/usr/bin/php /var/www/bims/index.php "projects/output"` 

Quelle est entre les guillemets obliques (`` ) is run and the output is passed as argument to rm`.

+1

xargs est légèrement meilleur: il peut gérer la sortie qui est trop longue pour la longueur maximale de la ligne de commande en exécutant 'rm' plus d'une fois. –

+0

Je n'ai pas dit * mieux *. J'ai dit * simple * :). – Felix

+1

note: peut ne pas fonctionner si le script Php produit des fichiers avec des espaces – ghostdog74

0

Je suppose que cela pourrait aider >>

grep -n nom de fichier "SearchString" | awk 'BEGIN {FS = ""}; {print $ 1}'

Questions connexes