Come posso catturare l'output di un comando su un descrittore di file nella shell Bourne?
Domanda
Il modo standard per acquisire l'output del comando nella shell Bourne è utilizzare la sintassi $ ()
:
output=$(mycommand)
Per i comandi che hanno un sacco di output, tuttavia, ciò richiede che la shell alloca memoria per l'intera cosa come una stringa lunga. Preferirei trovare qualcosa che faccia l'equivalente morale della funzione Unix C popen
, per ottenere un nuovo descrittore di file che potrei leggere
da:
newfd=popen(mycommand)
while read -u $newfd LINE; do
#process output
done
È anche possibile?
Soluzione
#!bash
ls | while read X
do
echo $X is a directory entry
done
Sostituisci 'ls' con il comando che preferisci
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow