Pagina 1 di 1
concatenazione "atipica" di comandi in shell
Inviato: sabato 30 luglio 2011, 17:45
da novainvicta
salve!
ho già visto che è possibile eseguire più comandi shell su una sola riga aggiungendo separandogli con il carattere |,
io devo fare una cosa un pochino diversa..
avete presente quando avviate un programma da terminale che chiede degli input, come "inserisci e-mail, nome, cognome" o cose simili..
ecco.. devo fare proprio questo.. oltre ad avviare il programma X, prevedere dentro la riga di comando stessa anche i parametri successivi
come si fa?
Re: concatenazione "atipica" di comandi in shell
Inviato: sabato 30 luglio 2011, 18:21
da gikbuntu
Non ho capito bene: stai scrivendo un programma?
Se sì (oltre a segnalare ai mod che spostino in programmazione) io farei così:
creo uno script bash.
Poi, senza fare impazzire chi dovrebbe usare quel programma da terminale, farei una procedura del tipo:
Codice: Seleziona tutto
#!/bin/bash
echo "inserisci un nome"
read $nome
echo "inserisci e-mail"
read $email
echo "inserisci server pop"
read $pop
poi ovviamente con $nome $email ed $pop ci puoi fare quello che vuoi.
Non concateni le stringhe, ma fai un programma più "user friendly"
Re: concatenazione "atipica" di comandi in shell
Inviato: sabato 30 luglio 2011, 18:33
da novainvicta
grazie per la risposta
quello che devo realizzare è l'esatto opposto,
il programma è già scritto.. (non da me).. è cryptsetup,
il quale in alcune operazioni richiede degli input da tastiera che a quanto so non sono passabili per argomento
in poche parole quello che mi serve è che da una riga di comando shell,
oltre ad avviare cryptsetup deve anche "inserire" in sequenza quando il programma li chiede dei parametri (come nome, cognome, etc..)
p.s.
sebbene questa esigenza nasce dalla scrittura di un programma, la domanda è generica ed applicabile a qualsiasi script shell, per questo ho pensato di metterla in questa sezione del forum
Re: concatenazione "atipica" di comandi in shell
Inviato: sabato 30 luglio 2011, 18:38
da gikbuntu
Ok capito.
puoi sempre risolvere con bash.
Codice: Seleziona tutto
#!/bin/bash
echo "inserisci il tuo nome"
read nome
echo "inserisci il cognome"
read cognome
read "inserisci l'indirizzo e-mail"
read email
cryptsetup $nome $cognome $email
Devi controllare però l'esatto ordine di inserimento.
Re: concatenazione "atipica" di comandi in shell
Inviato: sabato 30 luglio 2011, 18:41
da novainvicta
molto gentile! ..proprio quello che cercavo, provo e vedo che succede
Re: concatenazione "atipica" di comandi in shell
Inviato: sabato 30 luglio 2011, 18:48
da GREY_FOX
non penso proprio che funzioni in questo modo! a quanto pare li vuole a mano a mano i dati non direttamente come parametri.
Io proverei sempre con uno script in bash in qui richiami l'eseguibile e dopo ricordando la sequenza dei dati da inserire in automatico ne fai l'echo. Vedi se ti da problemi per l'accapo...
Re: concatenazione "atipica" di comandi in shell
Inviato: domenica 31 luglio 2011, 0:57
da novainvicta
si infatti, ma non ho capito come dovrei comporre lo script?
qualche cosa come:
programma X
echo comando1
echo comando2
?
GREY_FOX ha scritto:
non penso proprio che funzioni in questo modo! a quanto pare li vuole a mano a mano i dati non direttamente come parametri.
Io proverei sempre con uno script in bash in qui richiami l'eseguibile e dopo ricordando la sequenza dei dati da inserire in automatico ne fai l'echo. Vedi se ti da problemi per l'accapo...
Re: concatenazione "atipica" di comandi in shell
Inviato: domenica 31 luglio 2011, 11:52
da gikbuntu
GREY_FOX ha scritto:
non penso proprio che funzioni in questo modo! a quanto pare li vuole a mano a mano i dati non direttamente come parametri.
Io proverei sempre con uno script in bash in qui richiami l'eseguibile e dopo ricordando la sequenza dei dati da inserire in automatico ne fai l'echo. Vedi se ti da problemi per l'accapo...
Da me ha sempre funzionato...
si infatti, ma non ho capito come dovrei comporre lo script?
qualche cosa come:
programma X
echo comando1
echo comando2
?
Allora:
echo => Stampa a video la scritta che gli dai dopo "..........", oppure i valori che vuoi ($nome, ecc. ecc)
read => "legge" ciò che digita l'utente, per poi salvarlo nella stringa, il cui nome specifichi dopo read (ad es. read nomefile)
$nomefile => La stringa che hai preso prima con read.
Quindi, mettendo che la procedura di cryptsetup sia (in rosso quello che scrivi tu):
Inserisci il nome:
mario
Inserisci il cognome
rossi
inserisci l'email
mariorossi@ubuntu-it.org
Lo script che eseguirai tu sarà:
Codice: Seleziona tutto
#!/bin/bash
echo "inserisci il tuo nome"
read nome
echo "inserisci il cognome"
read cognome
read "inserisci l'indirizzo e-mail"
read email
cryptsetup $nome $cognome $email
$nome, $cognome, $email sono esattamente nell'ordine che ti chiede cryptsetup
Re: concatenazione "atipica" di comandi in shell
Inviato: domenica 31 luglio 2011, 15:00
da Elrond
novainvicta ha scritto:
ho già visto che è possibile eseguire più comandi shell su una sola riga aggiungendo separandogli con il carattere |,
Il simbolo | si chiama
pipe e serve per mandare l'output del comando precedente come input del comando successivo; per separare dei comandi slegati in modo che possano essere scritti tutti su un'unica riga bisogna usare il punto e virgola (se ne parla sempre nella stessa pagina linkata prima, più in alto rispetto alla pipe)
Re: concatenazione "atipica" di comandi in shell
Inviato: lunedì 1 agosto 2011, 3:09
da GREY_FOX
gikbuntu ha scritto:
GREY_FOX ha scritto:
non penso proprio che funzioni in questo modo! a quanto pare li vuole a mano a mano i dati non direttamente come parametri.
Io proverei sempre con uno script in bash in qui richiami l'eseguibile e dopo ricordando la sequenza dei dati da inserire in automatico ne fai l'echo. Vedi se ti da problemi per l'accapo...
Da me ha sempre funzionato...
si infatti, ma non ho capito come dovrei comporre lo script?
qualche cosa come:
programma X
echo comando1
echo comando2
?
Allora:
echo => Stampa a video la scritta che gli dai dopo "..........", oppure i valori che vuoi ($nome, ecc. ecc)
read => "legge" ciò che digita l'utente, per poi salvarlo nella stringa, il cui nome specifichi dopo read (ad es. read nomefile)
$nomefile => La stringa che hai preso prima con read.
Quindi, mettendo che la procedura di cryptsetup sia (in rosso quello che scrivi tu):
Inserisci il nome:
mario
Inserisci il cognome
rossi
inserisci l'email
mariorossi@ubuntu-it.org
Lo script che eseguirai tu sarà:
Codice: Seleziona tutto
#!/bin/bash
echo "inserisci il tuo nome"
read nome
echo "inserisci il cognome"
read cognome
read "inserisci l'indirizzo e-mail"
read email
cryptsetup $nome $cognome $email
$nome, $cognome, $email sono esattamente nell'ordine che ti chiede cryptsetup
Se il programma che deve usare chiede solo parametri da linea di comando ok ma se li chiede in esecuzione cosi non funziona.
Re: concatenazione "atipica" di comandi in shell
Inviato: lunedì 1 agosto 2011, 3:24
da smurf
dico la mia, magari è un boiata comunque....
per prima cosa bisogna vedere se cryptsetup (che non conosco affatto) vuole i dati in input uno per uno, a sua richiesta, o se li accetta tutti insieme.
Se li accetta tutti insieme basta fare
se invece li vuole uno per uno si potrebbe provare
Re: concatenazione "atipica" di comandi in shell
Inviato: martedì 3 gennaio 2012, 0:39
da novainvicta
Elrond ha scritto:
novainvicta ha scritto:
ho già visto che è possibile eseguire più comandi shell su una sola riga aggiungendo separandogli con il carattere |,
Il simbolo | si chiama
pipe e serve per mandare l'output del comando precedente come input del comando successivo; per separare dei comandi slegati in modo che possano essere scritti tutti su un'unica riga bisogna usare il punto e virgola (se ne parla sempre nella stessa pagina linkata prima, più in alto rispetto alla pipe)
alla fine non sono mica riuscito
il tuo commento era quello che sembrava dare più speranza, ma non ho trovato quel punto e virgola di cui parlavi..