concatenazione "atipica" di comandi in shell

Installazione, configurazione e uso di programmi e strumenti.
Scrivi risposta
novainvicta
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 811
Iscrizione: sabato 6 ottobre 2007, 11:32
Contatti:

concatenazione "atipica" di comandi in shell

Messaggio 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?
gikbuntu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: venerdì 28 gennaio 2011, 16:30
Località: Bolzano/Bozen (BZ)

Re: concatenazione "atipica" di comandi in shell

Messaggio 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"
novainvicta
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 811
Iscrizione: sabato 6 ottobre 2007, 11:32
Contatti:

Re: concatenazione "atipica" di comandi in shell

Messaggio 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
gikbuntu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: venerdì 28 gennaio 2011, 16:30
Località: Bolzano/Bozen (BZ)

Re: concatenazione "atipica" di comandi in shell

Messaggio 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.
novainvicta
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 811
Iscrizione: sabato 6 ottobre 2007, 11:32
Contatti:

Re: concatenazione "atipica" di comandi in shell

Messaggio da novainvicta »

molto gentile! ..proprio quello che cercavo, provo e vedo che succede
Avatar utente
GREY_FOX
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 339
Iscrizione: mercoledì 4 febbraio 2009, 0:24
Località: Centro Italia
Contatti:

Re: concatenazione "atipica" di comandi in shell

Messaggio 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...
Maledetto il paese che ha bisogno di eroi...
novainvicta
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 811
Iscrizione: sabato 6 ottobre 2007, 11:32
Contatti:

Re: concatenazione "atipica" di comandi in shell

Messaggio 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...
gikbuntu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 838
Iscrizione: venerdì 28 gennaio 2011, 16:30
Località: Bolzano/Bozen (BZ)

Re: concatenazione "atipica" di comandi in shell

Messaggio 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
Avatar utente
Elrond
Rampante Reduce
Rampante Reduce
Messaggi: 5018
Iscrizione: sabato 22 novembre 2008, 12:32
Contatti:

Re: concatenazione "atipica" di comandi in shell

Messaggio 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)
Il mio blog su Ubuntu | Script per vedere canali RAI in diretta senza browser (discussione)
Quando devi inserire nei messaggi del codice usa il tag code, è il pulsante # sopra le emoticon: [code]inserisci il testo qui[/code]
Avatar utente
GREY_FOX
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 339
Iscrizione: mercoledì 4 febbraio 2009, 0:24
Località: Centro Italia
Contatti:

Re: concatenazione "atipica" di comandi in shell

Messaggio 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.
Maledetto il paese che ha bisogno di eroi...
Avatar utente
smurf
Rampante Reduce
Rampante Reduce
Messaggi: 5610
Iscrizione: domenica 9 luglio 2006, 9:18
Desktop: MATE con Compiz
Distribuzione: Ubuntu 20.04.4
Sesso: Maschile
Località: Lima - Perú

Re: concatenazione "atipica" di comandi in shell

Messaggio 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

Codice: Seleziona tutto

cryptsetup param1 param2 param3
se invece li vuole uno per uno si potrebbe provare

Codice: Seleziona tutto

echo param1 param2 param3 | cryptsetup
La terra non è una eredità che riceviamo dai nostri genitori, ma un prestito che ci fanno i nostri figli.
novainvicta
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 811
Iscrizione: sabato 6 ottobre 2007, 11:32
Contatti:

Re: concatenazione "atipica" di comandi in shell

Messaggio 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..
Scrivi risposta

Ritorna a “Applicazioni”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti