PDA

Visualizza la versione completa : banalità shell script


novembre
13-07-2004, 15:29
ciao,
in uno shell script inserisco dei comandi che visualizzano delle informazioni su una macchina unix (es. hostname, uname etc.)
l'output lo redireziono su un file ma se faccio
hostname >> pippo
uname >> pippo
i risultati mi vengono su righe diverse, avrei bisogno che fossero sulla stessa riga separati
da un ";"... tipo
cicciohost;pippo:topolino ...
come posso fare? :dhò:

vortex87
13-07-2004, 15:52
Potresti prima ottenere tutti i valori di cui hai bisogno, poi scrivere il file:


#!/bin/sh

KERNEL=`uname -a`
HOSTNAME=`hostname`
CICCIO=`ciccio -p boh`

OUTPUT="$KERNEL;$HOSTNAME;$CICCIO"

echo "$OUTPUT" > /path/del/file.txt



Non so se può andare :stordita:

novembre
13-07-2004, 16:29
Originariamente inviato da vortex87
Potresti prima ottenere tutti i valori di cui hai bisogno, poi scrivere il file:


#!/bin/sh

KERNEL=`uname -a`
HOSTNAME=`hostname`
CICCIO=`ciccio -p boh`

OUTPUT="$KERNEL;$HOSTNAME;$CICCIO"

echo "$OUTPUT" > /path/del/file.txt



Non so se può andare :stordita:

grazie molte, va benissimo

wolf64
13-07-2004, 22:52
Se ti interessa puoi usare anche echo con l'opzione -n che non fa andare a capo, ad esempio:

MYNAME="myname"
YOURNAME="yourname"

echo -n "$MYNAME" > names
echo -n ";" >> names
echo -n "$YOURNAME" >> names

attenzione però che se alla fine del file non c'è il carattere di fine riga, per aggiungerlo per andare a capo basta fare un:

echo >> names

se fai un

cat names

otterrai

myname;yourname

pierluigi p
14-07-2004, 10:00
me stavo a fa' i fatti miei

echo $(uname)';'$(hostname)';'$(pwd) >fileout

pierluigi

wolf64
19-07-2004, 17:21
Originariamente inviato da pierluigi p
me stavo a fa' i fatti miei

echo $(uname)';'$(hostname)';'$(pwd) >fileout

pierluigi


Ciao Pier,
io avevo capito che gli serviva sapere come non far scrivere su righe diverse in un contesto più generale.


:ciauz:

novembre
23-07-2004, 16:46
ehmmm, :bhò: non vi arrabbiate...

sempre nello script famoso creo automaticamente 3 files: pippo pluto, paperino
nei 3 files ci sono delle righe
dovrei leggere la prima riga dei tre file e stampare i valori uno di seguito all'altro, poi la seconda e così via

potete indicarmi il costrutto da adottare per fare una cosa del genere? :messner:

Mutato
23-07-2004, 17:20
Originariamente inviato da novembre
ehmmm, :bhò: non vi arrabbiate...

:jam: :yuppi:



#!/bin/sh

# pulisco
rm -f *riga.txt

# listo i file pippo, pluto, paperino
ls p* > lista

# inizio il ciclo
for i in `cat lista`; do

prima=`head -1 $i`
seconda=`sed -e '1d' $i | head -1`
terza=`sed -e '1,2d' $i | head -1`

# per ogni riga che mi interessa creo un file
echo $prima >> primariga.txt
echo $seconda >> secondariga.txt
echo $terza >> terzariga.txt

done

# stampo a video il risultato
cat *riga.txt


E' solo un esempio, va bene se devi gestire poche righe... crea i tre files pippo, pluto, paperino e metti tre righe in ciascuno, poi lancia lo script.

:ciauz:

Loading