parametrizzazione script

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

parametrizzazione script

Messaggioda crismon_01 » venerdì 28 giugno 2019, 18: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
crismon_01
Prode Principiante
 
Messaggi: 88
Iscrizione: ottobre 2017
Desktop: K
Distribuzione: Ubuntu
Sesso: Maschile

Re: parametrizzazione script

Messaggioda Filoteo » venerdì 28 giugno 2019, 19:10

Filoteo
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 481
Iscrizione: agosto 2015
Desktop: Gnome
Distribuzione: Manjaro Linux

Re: parametrizzazione script

Messaggioda UbuNuovo » venerdì 28 giugno 2019, 21: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.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 3374
Iscrizione: dicembre 2009
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile

Re: parametrizzazione script

Messaggioda crismon_01 » sabato 29 giugno 2019, 13: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
crismon_01
Prode Principiante
 
Messaggi: 88
Iscrizione: ottobre 2017
Desktop: K
Distribuzione: Ubuntu
Sesso: Maschile

Re: parametrizzazione script

Messaggioda UbuNuovo » sabato 29 giugno 2019, 14: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.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 3374
Iscrizione: dicembre 2009
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile

Re: parametrizzazione script

Messaggioda crismon_01 » sabato 29 giugno 2019, 20:05

grazie mille
crismon_01
Prode Principiante
 
Messaggi: 88
Iscrizione: ottobre 2017
Desktop: K
Distribuzione: Ubuntu
Sesso: Maschile

Re: parametrizzazione script

Messaggioda UbuNuovo » sabato 29 giugno 2019, 22: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.
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 3374
Iscrizione: dicembre 2009
Desktop: Mate
Distribuzione: Ubuntu 14.04
Sesso: Maschile


Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 3 ospiti