Avviso: vi è stato un importante aggiornamento della piattaforma forum, si prega di visionare la discussione in merito: viewtopic.php?f=17&t=637551.

parametrizzazione script

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi riposta
crismon_01
Prode Principiante
Messaggi: 95
Iscrizione: mercoledì 4 ottobre 2017, 21:34
Desktop: K
Distribuzione: Ubuntu
Sesso: Maschile

parametrizzazione script

Messaggio da crismon_01 » venerdì 28 giugno 2019, 19:11

Buongiorno, una domanda facile facile, ma per me difficile, ho uno script che mando in esecuzione con

Codice: Seleziona tutto

sh script.sh
ora, vorrei parametrizzarlo a argomenti, ovvero, non ho argomenti esegue questa versione:

Codice: Seleziona tutto

#!/bin/bash

while true; do
        sleep 3
        curl localhost:8080/svc
        curl -X POST localhost:8080/svc
done

che è l'attuale e funziona
se ho come argomenti un numero invece che while true fa la stessa ma un numero di volte preciso volevo fare:

Codice: Seleziona tutto

for[i 1..$1 ]
e mi stavo ispirando a questa guida: link1 e se l'argomento non è neanche un numero ritorna un errore e vedevo questa guida come utile: link2
come posso modificare quello script?
grazie in anticipo per il vostro tempo

Filoteo
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 560
Iscrizione: venerdì 28 agosto 2015, 9:38
Desktop: Gnome
Distribuzione: Arch Linux

Re: parametrizzazione script

Messaggio da Filoteo » venerdì 28 giugno 2019, 20:10


Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3615
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatto:

Re: parametrizzazione script

Messaggio da UbuNuovo » venerdì 28 giugno 2019, 22:52

Hai messo '#!/bin/bash' ma poi esegui lo script con 'sh', perché?
Su ubuntu, Bash è la shell predefinita; una volta reso eseguibile, puoi eseguire lo script con il suo percorso assoluto o relativo.

Codice: Seleziona tutto

/percorso/da/root/allo/script/script.sh
o, per esempio, dalla directory dello script:

Codice: Seleziona tutto

./script.sh
se vuoi eseguire lo script indicandone la shel Bash, puoi eseguirlo con:

Codice: Seleziona tutto

bash script.sh
Se ho capito bene, vuoi passare come come parametro dello script, il numero di cicli da eseguire.
se vuoi continuare ad usare il ciclo while... con Bash:

Codice: Seleziona tutto

#!/bin/bash

msg_error="Devi passare un unico parametro, intero"

if [ "$#" -eq "1" ]
	then
		if [[ ! $1 =~ ^[0-9]+$ ]] ;then echo "$msg_error 1"; exit;fi
	else
		echo "$msg_error 2"
		exit
fi

i=0
while [ "$i" -le "$1" ];do
	echo "Ciclo n° $i"
	((i++))
done
con sh devi eliminare i bashismi

Codice: Seleziona tutto

:#!/bin/sh

msg_error="Devi passare un unico parametro, intero"

if [ "$#" -eq "1" ]
	then
		if ! echo "$1" | grep -Eq "^[0-9]+$" ;then echo "$msg_error 1"; exit;fi
	else
		echo "$msg_error 2"
		exit
fi

i=0
while [ "$i" -le "$1" ];do
	echo "Ciclo n° $i"
	 i=$(expr $i + 1)
done
Naturalmente al posto della riga 'echo "Ciclo n° $i"' devi mettere il codice da eseguire.
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

crismon_01
Prode Principiante
Messaggi: 95
Iscrizione: mercoledì 4 ottobre 2017, 21:34
Desktop: K
Distribuzione: Ubuntu
Sesso: Maschile

Re: parametrizzazione script

Messaggio da crismon_01 » sabato 29 giugno 2019, 14:28

Ti ringrazio, forse però non mi sono spiegato benissimo, praticamente vorrei che se non passo parametri lo fa all'infinito se passo un numerico lo fa un numero n (parametro) di volte altrimenti stampa un errore

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3615
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatto:

Re: parametrizzazione script

Messaggio da UbuNuovo » sabato 29 giugno 2019, 15:20

Codice: Seleziona tutto

#!/bin/bash

if [ "$#" -eq "0" ]
	then
		while :;do
			echo "Ciclo n° $i"
			((i++))
		done
		exit
fi

msg_error="Devi passare un unico parametro, intero o nessun parametro."

if [ "$#" -eq "1" ]
	then
		if [[ ! $1 =~ ^[0-9]+$ ]] ;then echo "$msg_error 1"; exit;fi
	else
		echo "$msg_error 2"
		exit
fi

i=0
while [ "$i" -le "$1" ];do
	echo "Ciclo n° $i"
	((i++))
done
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

crismon_01
Prode Principiante
Messaggi: 95
Iscrizione: mercoledì 4 ottobre 2017, 21:34
Desktop: K
Distribuzione: Ubuntu
Sesso: Maschile

Re: parametrizzazione script

Messaggio da crismon_01 » sabato 29 giugno 2019, 21:05

grazie mille

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3615
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile
Contatto:

Re: parametrizzazione script

Messaggio da UbuNuovo » sabato 29 giugno 2019, 23:40

Di nulla! :)
Avevi già tutte le informazioni necessarie per modificare lo script a tuo piacimento.
Una volta capito il codice postato (prima), avresti potuto adattare lo script da solo.
Cerca sempre di comprendere il codice, se c'è qualcosa che non ti è chiaro, chiedi pure.
Ciaux
Nel caso in cui sia il primo a rispondere ad una richiesta di aiuto...chiunque abbia una soluzione migliore o anche solo diversa dalla mia è incoraggiato ad intervenire liberamente senza inviarmi alcun messaggio privato. In programmazione è basilare sapere che si può ottenere il medesimo risultato utilizzando metodi diversi.

Scrivi riposta

Torna a

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti and 3 ospiti