Come stampare l'id di processo in statment


0

Ho assegnato un lavoro per prendere tutto il processo e trasformarli in una dichiarazione. Quindi ho provato questo script.

#!/bin/bash
a= ps | awk '{print $1}'
echo select $a

Quindi sto ottenendo questo risultato

PID
1838
1839
1840
13226
select 

So che la avariabile sta prendendo molti argomenti e non è in grado di inserirli in uno, ma non sono in grado di ottenere la logica.

Voglio un risultato simile a questo.

select 1838, 1839, 1840, 13226

Grazie in anticipo.


Sono presenti errori di sintassi di base per ciò che si desidera ottenere. Vedi ad esempio stackoverflow.com/q/16072351/445621 per un esempio di sostituzione di comando in una variabile di shell.
Daniel Andersson,

Grazie @DanielAndersson In questo modo non ottengo selecte in realtà voglio ',' (virgola) anche al centro di essi. E il pid sta arrivando come posso limitarlo?
temp

Risposte:


1

Risposta aggiornata

Utilizzare i backtick `` o $( )per racchiudere i comandi il cui output verrà salvato come variabile.

Coda +2 per mostrare tutto tranne la prima riga.

Awk aggiunge la virgola e gli spazi tra il portoghese

Sed rimuove lo spazio virgola alla fine della riga.

#!/bin/bash
a=$(ps | tail +2 | awk '{printf ("%s, ",$1)}' | sed "s/, $//")
echo select $a

Produzione

$ ./printpid.sh
select 2293836, 3276802, 6422606, 6750318, 7667882, 7798894, 8716412

@temp, prego. Spero che tu stia copiando e incollando questo ultimo punto indietro. Rimuovere quello sarebbe molto più difficile per me!
Wally,

Scusate @wally ma non possiamo manipolare ',' perché durante l'auditing ricevo errori.
temp

@temp, non capisco. Vuoi la virgola alla fine? Vuoi uno spazio dopo ogni virgola? Lo spazio è facile Basta aggiungere uno spazio dopo il %s,nel codice.
Wally,

mi scuso se ti sto infastidendo, non voglio la virgola (solo una virgola) alla fine della dichiarazione
temp

@temp. No! Non mi infastidisce. Ecco una versione senza l'ultima virgola. E ho aggiunto anche gli spazi.
Wally,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.