parametrizzazione script

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

parametrizzazione script

Messaggio da crismon_01 »

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
Avatar utente
Filoteo
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1322
Iscrizione: venerdì 28 agosto 2015, 9:38
Desktop: Gnome
Distribuzione: Arch Linux

Re: parametrizzazione script

Messaggio da Filoteo »

Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: parametrizzazione script

Messaggio da UbuNuovo »

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.
Salva l'Ucraina! 🇺🇦
crismon_01
Prode Principiante
Messaggi: 110
Iscrizione: mercoledì 4 ottobre 2017, 21:34
Desktop: K
Distribuzione: Ubuntu
Sesso: Maschile

Re: parametrizzazione script

Messaggio da crismon_01 »

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: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: parametrizzazione script

Messaggio da UbuNuovo »

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
Salva l'Ucraina! 🇺🇦
crismon_01
Prode Principiante
Messaggi: 110
Iscrizione: mercoledì 4 ottobre 2017, 21:34
Desktop: K
Distribuzione: Ubuntu
Sesso: Maschile

Re: parametrizzazione script

Messaggio da crismon_01 »

grazie mille
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4446
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: parametrizzazione script

Messaggio da UbuNuovo »

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
Salva l'Ucraina! 🇺🇦
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 24 ospiti