Programmazione in bash - parte 2

Seconda parte Questo mini-tutorial programmazione in Bash, dove impariamo a usare Ciclos e altri strumenti che ci aiuteranno a migliorare le funzionalità del nostro script.

Il condizionale If

La funzione di If è applicare un filtro ed eseguire un'operazione o un'attività per ogni tipo di filtro applicato. La sua struttura è la seguente:

Se [condizione]; quindi comandi elif [condizione]; poi altri comandi; comandi fi

Un esempio è mostrato accanto al ciclo For nella rispettiva sezione.

Ciclos

1. While: eseguirà tutti i comandi specificati tra do e done fintanto che la condizione è vera. Se vogliamo passargli operatori di confronto, l'espressione deve essere tra parentesi.

mentre CONDITION / COMMAND esegue i comandi eseguiti

Esempio: tabella di moltiplicazione di un numero

#! / bin / bash X = 1 echo "Inserisci un numero e premi INVIO" leggi M # Il ciclo controlla che X sia minore o uguale a 10 mentre [$ X –le 10] do #In R memorizziamo la moltiplicazione di X per MR = $ [X * M] #Questa moltiplicazione è stampata sullo schermo echo "$ M * $ X = $ R" #Con let, aumentiamo il valore di X di 1 unità let X = $ X + 1 fatto

2. For: memorizza un elenco di elementi in una variabile, che verrà utilizzato per eseguire determinate operazioni con ogni ciclo.

per VARIABILE in ELEMENTI esegue i comandi

Esempio: programma che copia un file da una cartella all'altra, sostituendo un vecchio file.

# / bin / bash # Stabiliamo le directory di origine e di destinazione ORIGIN = / home / user / Downloads DESTINATION = / home / user / Documents # Ci posizioniamo nel cd di origine $ ORIGIN # Di tutti i file, vogliamo solo quello che è # chiama FILE per FILE in * do ARCH-DESTINATION = "$ DESTINATION / $ FILE" # -f ci filtra i file regolari, poiché le directory non sono #nulla di buono per noi. –Nt filtra # file "più recenti" di quelli # trovati nella cartella di destinazione se [-f $ FILE] && [$ FILE –nt $ ARCH-DESTINATION]; poi echo "Copia $ FILE ..." # copia il file con cp cp $ FILE $ ARCH-DESTINATION fi fatto #Cd per uscire dalla cartella sorgente cd

Un altro esempio: script in cui l'utente deve indovinare un numero casuale generato dal computer.

# / bin / bash # Viene generato un numero casuale da 1 a 10, viene # salvato in RANDOM RANDOM = $ [$ RANDOM% 10 + 1] mentre [1] do echo –n "Inserisci un numero:" leggi NUM # Confronta se il numero scelto dall'utente è #equal to RANDOM; ricordarsi di usare $ per valutare i #valori delle variabili e non i loro nomi se [“$ NUM –eq“ $ RANDOM ”]; poi fai eco "Hai capito bene!" #break permette di terminare il ciclo mentre break #Se il numero è minore di RANDOM elif [“$ NUM –gt“ $ RANDOM ”]; then echo "È minore" "In caso contrario, è maggiore di RANDOM else echo" È maggiore "fi done

3. Until: struttura abbastanza simile a While, tranne per il fatto che il codice viene sempre eseguito mentre la valutazione della condizione è negativa, ovvero il programma continua a essere eseguito "fino a quando non si verifica la condizione"

finché CONDITION / COMMAND non esegue i comandi

Esempio: stampa i numeri 10-20 in ordine decrescente

#! / bin / bash CONT = 20 # Fintanto che il contatore è minore di 10 (-lt, "inferiore #than") il codice viene eseguito fino a [$ CONT -lt 10]; do echo "COUNTER $ CONT" #A CONT viene sottratto da un'unità lasciando che CONT- = 1 sia fatto

4. Seleziona: questo ultimo ciclo è un caso speciale, poiché generalmente viene utilizzato per realizzare menu velocemente. Funziona in modo simile al ciclo For.

selezionare VARIABILE in LISTA dei comandi eseguiti

Esempio: dare all'utente la possibilità di continuare o terminare lo script.

#! / bin / bash #item è una variabile che risponde a ciò che #utente sceglie, Continua e Fine sono le # opzioni disponibili per lui, sebbene sia possibile aggiungere altre opzioni # altro seleziona l'elemento in Continua Fine fare #Se l'utente sceglie Termina il programma, poi con pausa usciamo dal ciclo. se [$ elemento = "Fine"]; quindi rompere fi fatto
Grazie Juan Carlos Ortiz!

Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   Medio difficile suddetto

    Penso qualcosa del genere: tar -cf - Directory | (cd / altro / directory; tar -xvf -)

    Quindi sarebbe simile a / another / directory / Directory
    In questo modo ho compresso una directory e tu la decomprimi in un altro posto….

  2.   Miguel Angel suddetto

    Ciao, bravo tuto, sto imparando l'argomento e va tutto bene, solo che non sono riuscito a fare un programma che mi aiuti, per vedere se puoi aiutarmi per favore.

    Ho bisogno di fare un ciclo, in cui riceverà come parametri un elenco di un file sorgente, questo elenco porta solo nomi (senza estensione), in modo che il ciclo faccia quanto segue, cerca detto nome ricevuto in una directory (che è quella che cercheremo) , estrai e copia il file (nome completo già con estensione) e il percorso assoluto e crealo in un altro file di destinazione.

    Finora ho quanto segue:

    durante la lettura della riga
    do
    echo -e "$ riga"
    trova / home / mioutente / dof "$ line" -exec readlink -f {};
    done <testlist.txt Finora ho letto il file, ogni riga che ha, ma non posso fargli cercare quel file ed estrarre le informazioni, se puoi aiutarmi per favore, grazie. Saluti

  3.   Pamela galaviz suddetto

    Grazie mille per il contributo 🙂

  4.   Mario Saverio suddetto

    ciao ... spero che tu possa aiutare nella prossima pratica ... Decomprimere il file in tgz nella directory specificata, oltre a specificare utente e gruppo per tutte le directory e file esistenti e assegnare i permessi a file e directory
    nota: file pronti per la lettura e la scrittura
    autorizzazione all'esecuzione delle directory

  5.   juank suddetto

    ARCH-DESTINATION è una variabile in cui vogliamo salvare il percorso del file di destinazione, perdonandoci la ridondanza. Quindi, a questa variabile indichiamo la variabile DESTINAZIONE, che sopra contiene il percorso della cartella Documenti e aggiungiamo la "variabile" FILE, che contiene il nome del file. Se quel file fosse, ad esempio, list.doc, la variabile ARCH-DESTINATION sarebbe uguale a /home/Usuario/Documentos/listado.doc

  6.   Usiamo Linux suddetto

    È l'articolo precedente. Puoi accedervi all'indirizzo http://usemoslinux.blogspot.com

    Abbraccio! Paolo.

  7.   Frank suddetto

    Buongiorno amico solo grazie, molto bene il tuo blog, ma non riesco a ottenere la prima parte della programmazione in Bash, dove la ricevo grazie, saluti

  8.   Saito Mordraw suddetto

    Due parti straordinarie, i miei sinceri complimenti.

    Semplicemente meraviglioso.

  9.   Fredy suddetto

    Bien

  10.   Hugo suddetto

    Ciao, sto realizzando un programma con un CASE, cosa voglio che faccia e non so come, ad esempio:

    echo sceglie un'opzione:
    eco
    echo 1. opzione 1
    echo 2. opzione 2
    echo 3. opzione 3
    echo 4. opzione 4
    echo 5. Esci
    leggi var
    case "$ var" in
    1)
    echo "Hai selezionato l'opzione 1"
    ;;
    2)
    echo "Hai selezionato l'opzione 2"
    ;;
    3)
    ha buttato fuori "... .."
    ;;
    4)
    ha buttato fuori "..."
    ;;
    5)
    ha buttato fuori "..."

    ;;
    *)
    echo "opzione sbagliata"
    ;;
    che C

    ok quello che non so come fare è che quando seleziono l'opzione 4 che è uscire, chiedi se voglio davvero uscire e dammi 2 opzioni S & N

    e l'altra è che quando selezioni qualcosa di diverso dai numeri 1..5 non votare per me dal copione….

    Potresti aiutarmi grazie.

  11.   DAPAMA21 suddetto

    Ciao, ho iniziato a scrivere script 1 mese fa e grazie ai tuoi post di script. Avrò fatto circa 15-20. Grazie mille in anticipo. Ma ora il nostro insegnante ci ha dato un lavoro di cui sono diventato stagnante. Poiché l'insegnante chiede:
    passando una directory, copia nella tua home tutti i file che si trovano in quella directory in ordine alfabetico e nominandoli file1 file2 ecc ... ecc ...
    Ora sono al momento di trovare o individuare, volevo usare find ma quando gli ho dato il codice di errore mentre lo metto attraverso dev null, i permessi negati poi mi sbaglio e inserendo la localizzazione sono qui:
    individuare $ 1 | grep "/ $ {1} \ $"
    ma ovviamente con questo escono tutti ...
    Grazie mille se lo leggi.
    Se puoi aiutarmi sarebbe un grande favore.

  12.   luis suddetto

    Vorrei che tu mi aiutassi con questo.
    1.-Immettere un numero intero sulla tastiera e visualizzare due volte e triplicare quel numero sullo schermo. 2.- Fare un programma per decidere se un numero inserito da tastiera è divisibile per 3 oppure no.
    3.- Crea un programma per trovare la somma di: ???????? + ???????? + ???????? + ???????? + ⋯? ???????
    4.- Crea un programma per trovare la somma 1 + 3 + 5 + 7 + 9 · · · + (2n + 1).
    5.-Crea un programma che stampi la parola Linux sullo schermo 10 volte
    6.-Crea un programma che stampi la parola Linux sullo schermo il numero di volte indicato da un utente.
    7.-Immettere un importo in ore e convertirli in minuti e secondi.
    8.-Calcola l'area di un triangolo
    9.-Immettere un numero sulla tastiera, quindi se si immette 2 deve essere al quadrato, 3 al cubo, 4 al quarto e così via fino a 6.
    10-Calcola la pensione che uno studente deve pagare, deve essere inserito il codice della specialità ei giorni di arretrato:
    CODICE
    SPECIALITÀ
    QUANTITÀ
    DURATA GIORNALIERA
    1
    COMPUTING
    160
    1
    2
    ASSISTENZA INFERMIERISTICA
    150
    1.5
    3
    SEGRETERIA
    140
    2
    4
    TURISMO
    180
    2.5
    5
    CONTABILITÀ
    160
    1
    Devi mostrare la specialità che stai studiando, il costo della pensione, il default e l'importo totale da pagare.

  13.   charly suddetto

    Ciao, qualcuno può aiutarmi?
    Ho bisogno di «Richiedi tre parole dalla tastiera e visualizzale in ordine alfabetico dalla A alla Z»
    In linguaggio Bash o sh per LINUX porfaborrrr