Bash Pagina 73: Diferență între versiuni

De la Wiki Linux Advanced
Sari la navigare Sari la căutare
(Pagină nouă: ==Exercițiul 2== <code> #!/bin/bash # Funcție pentru afișarea modului de utilizare usage() { echo "Usage: $0 [-r] [-b n1] [-s n2] stop" echo " -r Afișează numerele în ordine inversă (descrescătoare)" echo " -b n1 Setează valoarea de început n1" echo " -s n2 Setează valoarea de sfârșit n2" echo " -h Afișează acest mesaj de ajutor" exit 1 } # Valori implicite reverse=false start=1 stop=10 # Parsarea opțiunilor while getopts...)
 
Fără descriere a modificării
 
(Nu s-au afișat 2 versiuni intermediare efectuate de același utilizator)
Linia 1: Linia 1:
==Exercițiul 2==
==Exercițiul 2==


<code>
'''Scenariu'''
#!/bin/bash


# Funcție pentru afișarea modului de utilizare
Scrieți un script care afișează numerele de la n1 la n2 pana la n, daca e prezent -r face afișare inversă, dacă primește -h ca argument afișează ''modul de apelare''. Programul numără de la 0 până la n, dacă n nu e prezent afișează ''modul de apelare'' definit în funcția ''usage''. Daca -b este prezent numără de la n1 până la n, iar dacă n2 e prezent numără de la n1 la n2, daca n1 nu e prezent numără de la 0.
usage() {
 
   echo "Usage: $0 [-r] [-b n1] [-s n2] stop"
'''Scriptul'''
 
#!/bin/bash
# Funcție pentru afișarea modului de utilizare
usage() {
   echo "Usage: $0 [-r] [-b n1] [-s n2] n"
   echo "  -r      Afișează numerele în ordine inversă (descrescătoare)"
   echo "  -r      Afișează numerele în ordine inversă (descrescătoare)"
   echo "  -b n1    Setează valoarea de început n1"
   echo "  -b n1    Setează valoarea de început n1"
Linia 12: Linia 16:
   echo "  -h      Afișează acest mesaj de ajutor"
   echo "  -h      Afișează acest mesaj de ajutor"
   exit 1
   exit 1
}
}
 
# Valori implicite
# Valori implicite
reverse=false
reverse=false
start=0
start=1
end=""
stop=10
# Parsarea opțiunilor
 
while getopts ":rb:s:h" opt; do
# Parsarea opțiunilor
while getopts ":rb:s:h" opt; do
   case ${opt} in
   case ${opt} in
     r)
     r)
Linia 29: Linia 31:
       ;;
       ;;
     s)
     s)
       stop=$OPTARG
       end=$OPTARG
       ;;
       ;;
     h)
     h)
Linia 35: Linia 37:
       ;;
       ;;
     \?)
     \?)
       echo "Invalid option: -$OPTARG" >&2
       echo "Opțiune invalidă: -$OPTARG" >&2
       usage
       usage
       ;;
       ;;
     :)
     :)
       echo "Option -$OPTARG requires an argument." >&2
       echo "Opțiunea -$OPTARG necesită un argument." >&2
       usage
       usage
       ;;
       ;;
   esac
   esac
done
done
shift $((OPTIND -1))
shift $((OPTIND -1))
 
# Verificare argument "n"
# Verificare argument "stop"
if [ -z "$1" ]; then
if [[ $1 != "stop" ]]; then
   echo "Lipseste argumentul 'n'"
   echo "Lipseste argumentul 'stop'"
   usage
   usage
fi
fi
 
n=$1
# Afișare numere în funcție de ordine
# Setează sfârșitul (n2) dacă nu a fost specificat
if $reverse; then
if [ -z "$end" ]; then
   for ((i = stop; i >= start; i--)); do
  end=$n
fi
# Afișare numere în funcție de ordine
if $reverse; then
   for ((i = end; i >= start; i--)); do
     echo "$i"
     echo "$i"
   done
   done
else
else
   for ((i = start; i <= stop; i++)); do
   for ((i = start; i <= end; i++)); do
     echo "$i"
     echo "$i"
   done
   done
fi
fi
 
'''Explicații'''
 
* Funcția ''usage'': Afișează modul de utilizare a scriptului și se oprește execuția.
* Valorile implicite: reverse este setat la false, iar start este inițializat la 0. end este inițializat ca un string gol.
* Parsarea argumentelor: Folosește getopts pentru a procesa opțiunile -r, -b, -s, și -h.
* Verificarea argumentului n: Dacă n nu este furnizat, scriptul va afișa mesajul de utilizare.
* Ajustarea valorii de sfârșit: Dacă end nu este specificat, este setat la valoarea lui n.
* Afișarea numerelor: În funcție de opțiunea -r, scriptul va afișa numerele între n1 și n2 în ordine crescătoare sau descrescătoare.
 


</code>


[[Bash_Pagina_72|Pagina anterioară]] | [[Bash_Pagina_74|Următoarea pagină]]
[[Bash_Pagina_72|Pagina anterioară]] | [[Bash_Pagina_74|Următoarea pagină]]

Versiunea curentă din 27 octombrie 2024 14:26

Exercițiul 2

Scenariu

Scrieți un script care afișează numerele de la n1 la n2 pana la n, daca e prezent -r face afișare inversă, dacă primește -h ca argument afișează modul de apelare. Programul numără de la 0 până la n, dacă n nu e prezent afișează modul de apelare definit în funcția usage. Daca -b este prezent numără de la n1 până la n, iar dacă n2 e prezent numără de la n1 la n2, daca n1 nu e prezent numără de la 0.

Scriptul

#!/bin/bash
# Funcție pentru afișarea modului de utilizare
usage() {
 echo "Usage: $0 [-r] [-b n1] [-s n2] n"
 echo "  -r       Afișează numerele în ordine inversă (descrescătoare)"
 echo "  -b n1    Setează valoarea de început n1"
 echo "  -s n2    Setează valoarea de sfârșit n2"
 echo "  -h       Afișează acest mesaj de ajutor"
 exit 1
}
# Valori implicite
reverse=false
start=0
end=""
# Parsarea opțiunilor
while getopts ":rb:s:h" opt; do
 case ${opt} in
   r)
     reverse=true
     ;;
   b)
     start=$OPTARG
     ;;
   s)
     end=$OPTARG
     ;;
   h)
     usage
     ;;
   \?)
     echo "Opțiune invalidă: -$OPTARG" >&2
     usage
     ;;
   :)
     echo "Opțiunea -$OPTARG necesită un argument." >&2
     usage
     ;;
 esac
done
shift $((OPTIND -1))
# Verificare argument "n"
if [ -z "$1" ]; then
 echo "Lipseste argumentul 'n'"
 usage
fi
n=$1
# Setează sfârșitul (n2) dacă nu a fost specificat
if [ -z "$end" ]; then
 end=$n
fi
# Afișare numere în funcție de ordine
if $reverse; then
 for ((i = end; i >= start; i--)); do
   echo "$i"
 done
else
 for ((i = start; i <= end; i++)); do
   echo "$i"
 done
fi

Explicații

  • Funcția usage: Afișează modul de utilizare a scriptului și se oprește execuția.
  • Valorile implicite: reverse este setat la false, iar start este inițializat la 0. end este inițializat ca un string gol.
  • Parsarea argumentelor: Folosește getopts pentru a procesa opțiunile -r, -b, -s, și -h.
  • Verificarea argumentului n: Dacă n nu este furnizat, scriptul va afișa mesajul de utilizare.
  • Ajustarea valorii de sfârșit: Dacă end nu este specificat, este setat la valoarea lui n.
  • Afișarea numerelor: În funcție de opțiunea -r, scriptul va afișa numerele între n1 și n2 în ordine crescătoare sau descrescătoare.


Pagina anterioară | Următoarea pagină