<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Bash - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Impara a programmare gratuitamente! Tutorial di programmazione su Python, JavaScript, Linux e molto altro. ]]>
        </description>
        <link>https://www.freecodecamp.org/italian/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Bash - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/italian/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Thu, 14 May 2026 19:58:22 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/italian/news/tag/bash/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Array Bash – Come Dichiarare un Array di Stringhe in uno Script Bash ]]>
                </title>
                <description>
                    <![CDATA[ Gli script bash ti offrono un modo conveniente per automatizzare delle operazioni dalla riga di comando. Con bash puoi fare molte delle cose che faresti con altri linguaggi di scripting o programmazione. Puoi creare e usare variabili, eseguire loop, usare della logica condizionale e memorizzare dati in array. Mentre il ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/array-bash-come-dichiarare-un-array-di-stringhe-in-uno-script-bash/</link>
                <guid isPermaLink="false">63d185db0fb58706fd716916</guid>
                
                    <category>
                        <![CDATA[ Bash ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Dario Di Cillo ]]>
                </dc:creator>
                <pubDate>Tue, 31 Jan 2023 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/01/pexels-belle-co-1000445.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/bash-array-how-to-declare-an-array-of-strings-in-a-bash-script/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Bash Array – How to Declare an Array of Strings in a Bash Script</a>
      </p><p>Gli script bash ti offrono un modo conveniente per automatizzare delle operazioni dalla riga di comando.</p><p>Con bash puoi fare molte delle cose che faresti con altri linguaggi di scripting o programmazione. Puoi creare e usare variabili, eseguire loop, usare della logica condizionale e memorizzare dati in array.</p><p>Mentre il funzionamento può risultare familiare, la sintassi di bash può essere insidiosa. In questo articolo, imparerai come dichiarare degli array e come usarli nel tuo codice.</p><h2 id="come-dichiarare-un-array-in-bash"><strong>Come dichiarare un array in bash</strong></h2><p>Dichiarare un array in bash è semplice, ma presta attenzione alla sintassi. Se sei abituato ad altri linguaggi di programmazione, il codice potrebbe sembrarti familiare, ma ci sono delle lievi differenze che possono sfuggire facilmente.</p><p>Per dichiarare un array, segui i seguenti passaggi:</p><ol><li>Dai all'array un nome</li><li>Dopo il nome della variabile aggiungi il segno di uguale. Il segno di uguale <em>non deve avere spazi intorno</em></li><li>Racchiudi l'array in <em>parentesi tonde</em> (non parentesi quadre come in JavaScript)</li><li>Digita le stringhe usando le virgolette, ma <em>senza usare virgole</em> tra le stringhe</li></ol><p>La dichiarazione dell'array avrà questo aspetto:</p><pre><code class="language-sh">myArray=("cat" "dog" "mouse" "frog")</code></pre><p>Ecco fatto! Semplice.</p><h2 id="come-accedere-a-un-array-in-bash"><strong>Come accedere a un array in bash</strong></h2><p>Esistono un paio di modi diversi per iterare su un array. È possibile iterare sugli elementi stessi o sugli indici.</p><h3 id="come-iterare-sugli-elementi-di-un-array"><strong>Come iterare sugli elementi di un array</strong></h3><p>Il codice per iterare sugli elementi dell'array avrà un aspetto simile:</p><pre><code class="language-sh">for str in ${myArray[@]}; do
  echo $str
done</code></pre><p>È un po' come usare <code>forEach</code> in JavaScript. Per ogni stringa (str) nell'array (myArray), stampa la stringa.</p><p>L'output di questo loop sarà il seguente:</p><pre><code>cat
dog
mouse
frog</code></pre><p><strong><strong>Not</strong>a</strong>: il simbolo <code>@</code> nelle parentesi quadre indica che il loop interessa <em>tutti </em>gli elementi dell'array. Se dovessi tralasciarlo e scrivere <code>for str in ${myArray}</code>, verrebbe stampata solo la prima stringa dell'array.</p><h3 id="come-iterare-sugli-indici-di-un-array"><strong>Come iterare sugli indici di un array</strong></h3><p>In alternativa, è possibile iterare sugli indici di un array. È simile a un loop <code>for</code> in JavaScript ed è utile nel caso in cui tu voglia accedere all'indice di ogni elemento.</p><p>Per usare questo metodo, il codice dovrà avere questo aspetto:</p><pre><code class="language-sh">for i in ${!myArray[@]}; do
  echo "element $i is ${myArray[$i]}"
done</code></pre><p>L'output sarà come segue:</p><pre><code>element 0 is cat
element 1 is dog
element 2 is mouse
element 3 is frog</code></pre><p><strong><strong>Not</strong>a</strong>: il punto esclamativo all'inizio della variabile <code>myArray</code> indica che stai accedendo agli <em>indici </em>dell'array e non agli elementi stessi. Questo può causare confusione se sei abituato a usare il punto esclamativo per indicare la negazione, quindi fai attenzione.</p><p><strong>Un'altra nota</strong>: bash normalmente non richiede le parentesi graffe per le variabili, ma per gli array sì. Puoi notare che per fare riferimento a un array si usa la sintassi <code>${myArray}</code>, ma per riferirsi a una stringa o a un numero si usa semplicemente il simbolo del dollaro: <code>$i</code>.</p><h2 id="conclusione"><strong>Conclusione</strong></h2><p>Gli script bash sono utili per automatizzare delle operazioni dalla riga di comando, e gli array sono un ottimo strumento da usare per conservare dati multipli.</p><p>Dichiararli e utilizzarli non è difficile, ma è diverso da altri linguaggi, quindi fai molta attenzione per evitare di fare errori.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Shell Scripting per Principianti – Come Scrivere Script Bash in Linux ]]>
                </title>
                <description>
                    <![CDATA[ Lo Shell scripting è una parte importante del processo di automazione in Linux. Lo scripting ti aiuta a scrivere sequenze di comandi in un file, per poi eseguirli. Questo ti fa risparmiare tempo, in quanto non devi scrivere tutte le volte certi comandi. Puoi eseguire attività giornaliere con efficienza e ]]>
                </description>
                <link>https://www.freecodecamp.org/italian/news/shell-scripting-per-principianti/</link>
                <guid isPermaLink="false">63bee0880a4f0206bd4656ef</guid>
                
                    <category>
                        <![CDATA[ Bash ]]>
                    </category>
                
                    <category>
                        <![CDATA[ Linux ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Roberto Pauletto ]]>
                </dc:creator>
                <pubDate>Fri, 20 Jan 2023 05:30:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-post-image.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Articolo originale:</strong> <a href="https://www.freecodecamp.org/news/shell-scripting-crash-course-how-to-write-bash-scripts-in-linux/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">Shell Scripting for Beginners – How to Write Bash Scripts in Linux</a>
      </p><p>Lo Shell scripting è una parte importante del processo di automazione in Linux. Lo scripting ti aiuta a scrivere sequenze di comandi in un file, per poi eseguirli.</p><p>Questo ti fa risparmiare tempo, in quanto non devi scrivere tutte le volte certi comandi. Puoi eseguire attività giornaliere con efficienza e anche pianificarle per una esecuzione automatica.</p><p>Puoi anche impostare certi script per essere eseguiti all'avvio come ad esempio mostrare un particolare messaggio quando si lancia una nuova sessione oppure impostare determinate variabili di ambiente.</p><p>Le applicazioni e gli utilizzi dello scripting sono numerosi, quindi iniziamo subito.</p><p>In questo articolo imparerai:</p><ol><li>Cos'è una shell bash.</li><li>Cos'è uno script bash e come identificarlo.</li><li>Come creare ed eseguire il tuo primo script bash.</li><li>La sintassi base dello shell scripting.</li><li>Come scoprire gli script pianificati in un sistema.</li><li>Come automatizzare gli script pianificandoli tramite job di cron.</li></ol><p>Il modo migliore per apprendere è l'esercizio. Ti consiglio vivamente di seguire gli esempi dell'articolo usando &nbsp;<a href="https://replit.com/~">Replit</a>. Puoi avere accesso a una shell di Linux in esecuzione nel giro di minuti.</p><h2 id="introduzione-alla-shell-bash"><strong>Introduzione alla Shell Bash</strong></h2><p>La riga di comando di Linux è fornita da un programma chiamato shell. Nel corso degli anni, questo programma si è evoluto per soddisfare diverse esigenze.</p><p>Utenti diversi possono essere configurati per utilizzare shell diverse. Tuttavia la maggior parte degli utenti preferisce rimanere con la shell predefinita, che per molte distribuzioni Linux è la GNU Bourne-Again Shell (bash). Bash ha sostituito la Bourne shell (sh).</p><p>Quando la shell viene lanciata, utilizza uno script di partenza che si trova nel file <code>.bashrc</code> o nel file <code>.bash_profile</code> nella tua directory home, che ti consente di personalizzare il comportamento della shell.</p><p>Quando una shell è usata in modo interattivo, viene mostrato il simbolo <code>$</code> quando è in attesa di un comando dall'utente. Questo è chiamato prompt della shell.</p><p><code>[username@host ~]$</code></p><p>Se la shell viene eseguita dall'utente come root, il prompt viene modificato in &nbsp;<code>#</code>. Il prompt della shell del superuser assomiglia a questo:</p><p><code>[root@host ~]#</code></p><p>Bash è molto potente e può semplificare alcune operazioni che sono difficilmente realizzabili con una GUI (Interfaccia Utente Grafica). Ricorda che molti server non hanno una GUI, ed è meglio imparare a usare la potenza di una interfaccia da riga di comando (CLI).</p><h2 id="cos-uno-script-bash"><strong>Cos'è uno Script Bash</strong></h2><p>Uno script bash è una serie di comandi scritti in un file, che vengono letti ed eseguiti dal programma bash, riga per riga.</p><p>Per esempio, puoi portarti in un certo percorso, creare una cartella e generare un processo al suo interno usando la riga di comando.</p><p>Puoi eseguire la stessa sequenza di passi salvando i comandi in uno script bash, quindi eseguendolo. Non ci sono limiti al numero di volte nelle quali puoi eseguire lo script.</p><h2 id="come-identificare-uno-script-bash"><strong>Come Identificare uno Script Bash</strong></h2><h3 id="estensione-file-sh-"><strong>Estensione file <code>.sh</code>.</strong></h3><p>Per convenzione di denominazione, gli script bash hanno un'estensione <code>.sh</code>. Tuttavia gli script bash possono essere eseguiti senza problemi anche senza l'estensione <code>sh</code>.</p><h3 id="script-che-iniziano-con-bash-bang-"><strong>Script che iniziano con bash bang.</strong></h3><p>Gli script sono anche identificati con uno <code>shebang</code> al loro interno. Shebang è la combinazione dei termini inglesi <code>bash #</code> e <code>bang !</code> seguito dal percorso della shell bash. Questa è la prima riga dello script. Shebang dice alla shell di eseguire lo script tramite la shell bash. Shebang è semplicemente il percorso assoluto all'interprete bash.</p><p>Di seguito un esempio di una istruzione shebang.</p><pre><code class="language-bash">#! /bin/bash</code></pre><p>Il percorso del programma bash può variare. Vedremo in seguito come identificarlo.</p><h3 id="permessi-di-esecuzione"><strong>Permessi di esecuzione</strong></h3><p>Gli script hanno permessi di esecuzione per l'utente che li esegue.</p><p>Un permesso di esecuzione è rappresentato da una <code>x</code>. Nell'esempio che segue l'utente "zaira" ha permessi di lettura, scrittura, esecuzione (<code>rwx</code> ) per il file <code>test_script.sh</code></p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/03/image-98.png" class="kg-image" alt="image-98" width="600" height="400" loading="lazy"></figure><h3 id="colorazione-del-file"><strong>Colorazione del file</strong></h3><p>Nella maggior parte delle shell delle distribuzioni Linux, gli script eseguibili appaiono in colori diversi rispetto al resto di file e cartelle.</p><p>Nel mio caso gli script con privilegi di esecuzione appaiono di colore verde.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/03/image-99.png" class="kg-image" alt="image-99" width="600" height="400" loading="lazy"></figure><h2 id="come-creare-il-tuo-primo-script-bash"><strong>Come Creare il Tuo Primo Script Bash</strong></h2><p>Creiamo un semplice script in bash che stampa <code>Hello World</code>.</p><h3 id="crea-un-file-chiamato-hello_world-sh"><strong>Crea un file chiamato hello_world.sh</strong></h3><pre><code class="language-bash">touch hello_world.sh</code></pre><h3 id="trova-il-percorso-della-tua-shell-bash"><strong>Trova il percorso della tua shell bash</strong></h3><pre><code class="language-bash">which bash</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/03/image-100.png" class="kg-image" alt="image-100" width="600" height="400" loading="lazy"></figure><p>Nel mio caso il percorso è &nbsp;<code>/usr/bin/bash</code>, che includerò nello shebang.</p><h3 id="scrivi-il-comando"><strong>Scrivi il comando</strong></h3><p>Stamperemo con il comando <code>echo</code> "hello world" alla console.</p><p>Il nostro script è il seguente:</p><pre><code class="language-bash">#! usr/bin/bash
echo "Hello World"</code></pre><p>Modifica il file <code>hello_world.sh</code> usando un editor testo di tua scelta e aggiungi le righe qui sopra.</p><h3 id="fornisci-permessi-di-esecuzione-al-tuo-utente"><strong>Fornisci permessi di esecuzione al tuo utente</strong></h3><p>Modifica i permessi del file per consentire l'esecuzione dello script tramite il comando seguente:</p><pre><code class="language-bash">chmod u+x hello_world.sh</code></pre><p><code>chmod</code> modifica i permessi esistenti di un file per un dato utente. Stiamo aggiungendo <code>+x</code> all'utente che è proprietario del file (<code>u</code>).</p><h3 id="eseguire-lo-script"><strong>Eseguire lo script</strong></h3><p>Puoi eseguire lo script nei seguenti modi:</p><p><code>./hello_world.sh</code> (se il file ha permessi di esecuzione)</p><p><code>bash hello_world.sh</code> (non è necessario che il file abbia permessi di esecuzione)</p><p><strong>Ecco il risultato<strong>:</strong></strong></p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/03/image-160.png" class="kg-image" alt="Two ways to run scripts" width="600" height="400" loading="lazy"><figcaption>Due modi di eseguire uno script</figcaption></figure><h2 id="la-sintassi-base-dello-scripting-bash"><strong>La Sintassi Base dello Scripting Bash</strong></h2><p>Proprio come ogni altro linguaggio di programmazione, lo scripting bash segue un insieme di regole per creare programmi che possono essere compresi dal computer. In questa sezione, studieremo la sintassi dello scripting bash.</p><h3 id="come-definire-variabili"><strong>Come definire variabili</strong></h3><p>Possiamo definire una variabile usando la sintassi <code>nome_variabile=valore</code>. Per ottenere il valore di una variabile aggiungi <code>$</code> davanti al nome della stessa.</p><pre><code class="language-bash">#!/bin/bash
# Un semplice esempio di variabili
saluto=Ciao
nome=Tux
echo $saluto $nome
</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_1-1.png" class="kg-image" alt="image-104" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_1-1.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_1-1.png 780w" width="780" height="251" loading="lazy"></figure><p>Tux è &nbsp;il nome della mascotte di Linux, il pinguino.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/03/image-119.png" class="kg-image" alt="Hi, I am Tux." width="600" height="400" loading="lazy"><figcaption>Ciao, sono Tux.</figcaption></figure><h3 id="espressioni-aritmetiche"><strong>Espressioni Aritmetiche</strong></h3><p>Sotto sono indicati gli operatori supportati da bash per le operazioni di calcolo matematico:</p><!--kg-card-begin: markdown--><table>
<thead>
<tr>
<th>OPERATORE</th>
<th>UTILIZZO</th>
</tr>
</thead>
<tbody>
<tr>
<td>+</td>
<td>addizione</td>
</tr>
<tr>
<td>-</td>
<td>sottrazione</td>
</tr>
<tr>
<td>*</td>
<td>moltiplicazione</td>
</tr>
<tr>
<td>/</td>
<td>divisione</td>
</tr>
<tr>
<td>**</td>
<td>esponenziale</td>
</tr>
<tr>
<td>%</td>
<td>resto</td>
</tr>
</tbody>
</table>
<!--kg-card-end: markdown--><p>Eseguiamo qualche esempio.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/03/image-108.png" class="kg-image" alt="Note the spaces, these are part of the syntax" width="600" height="400" loading="lazy"><figcaption>Nota che gli spazi sono parte della sintassi</figcaption></figure><p>Le espressioni numeriche possono anche essere calcolate e salvate in una variabile usando la sintassi seguente:</p><p><code>variabile=$((espressione))</code></p><p>Proviamo un esempio:</p><pre><code class="language-bash">#!/bin/bash

var=$((3+9))
echo $var
</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_2.png" class="kg-image" alt="image-109" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_2.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_2.png 780w" width="780" height="251" loading="lazy"></figure><p>Le frazioni non sono calcolate correttamente utilizzando i metodi di cui sopra e sono troncate.</p><p>Per &nbsp;<strong>calcoli decimali </strong>possiamo usare il comando <code>bc</code> per ottenere il risultato con un determinato numero di cifre decimali. <code>bc</code> (Bash Calculator) è una calcolatrice da riga di comando che supporta calcoli fino a un certo numero di posizioni decimali.</p><p><code>echo "scale=2;22/7" | bc</code></p><p>Dove <code>scale</code> definisce il numero di posizioni decimali richieste nel risultato.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/03/image-110.png" class="kg-image" alt="Getting output to 2 decimal places" width="600" height="400" loading="lazy"><figcaption>Ottenere un risultato con due cifre decimali</figcaption></figure><h3 id="come-leggere-l-input-utente"><strong>Come leggere l'input utente</strong></h3><p>Talvolta occorre acquisire un input utente per eseguire certe operazioni.</p><p>In bash, possiamo ottenere l'input dall'utente con il comando <code>read</code>.</p><pre><code>read nome_variabile</code></pre><p>Per mostrare all'utente un messaggio personalizzato usa l'opzione &nbsp;<code>-p</code>.</p><p><code>read -p "Digita la tua età" nome_variabile</code></p><p><strong><strong>E</strong>sempio<strong>:</strong></strong></p><pre><code class="language-bash">#!/bin/bash

echo "Digita un numero"
read a

echo "Digita un numero"
read b

var=$((a+b))
echo $var
</code></pre><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_3.png" class="kg-image" alt="image-111" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_3.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_3.png 780w" width="780" height="300" loading="lazy"></figure><h3 id="operatori-logici-per-confronti-numerici"><strong>Operatori logici per confronti numerici</strong></h3><p>Il confronto viene usato per verificare se le istruzioni si valutano come vere o false. Possiamo usare gli operatori qui sotto per confrontare due istruzioni:</p><!--kg-card-begin: markdown--><table>
<thead>
<tr>
<th>OPERAZIONE</th>
<th>SINTASSI</th>
<th>DESCRIZIONE</th>
</tr>
</thead>
<tbody>
<tr>
<td>Uguaglianza</td>
<td>num1 -eq num2</td>
<td>num1 è uguale a num2</td>
</tr>
<tr>
<td>Maggiore di o uguale a</td>
<td>num1 -ge num2</td>
<td>num1 è maggiore di o uguale a num2</td>
</tr>
<tr>
<td>Maggiore di</td>
<td>num1 -gt num2</td>
<td>num1 è maggiore di num2</td>
</tr>
<tr>
<td>Minore di o uguale a</td>
<td>num1 -le num2</td>
<td>num1 è minore di o uguale a num2</td>
</tr>
<tr>
<td>Minore di</td>
<td>num1 -lt num2</td>
<td>num1 è minore di num2</td>
</tr>
<tr>
<td>Non Uguale a</td>
<td>num1 -ne num2</td>
<td>num1 non è uguale a num2</td>
</tr>
</tbody>
</table>
<!--kg-card-end: markdown--><p><strong><strong>S</strong>i<strong>nta</strong>ssi</strong>:</p><pre><code class="language-bash">if [ condizioni ]
    then
         comandi
fi</code></pre><p><strong><strong>E</strong>se<strong>mp</strong>io</strong>:</p><p>Confrontiamo due numeri e troviamo qual è la loro relazione:</p><pre><code class="language-bash">#!/bin/bash

read x
read y

if [ $x -gt $y ]
then
echo X è maggiore di Y
elif [ $x -lt $y ]
then
echo X è minore di Y
elif [ $x -eq $y ]
then
echo X è uguale a Y
fi</code></pre><p>Output:</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_4.png" class="kg-image" alt="image-112" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_4.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_4.png 780w" sizes="(min-width: 720px) 720px" width="780" height="393" loading="lazy"></figure><h3 id="istruzioni-condizionali-processo-decisionale-"><strong>Istruzioni Condizionali (Processo Decisionale)</strong></h3><p>Le condizioni sono espressioni che sono valutate come un'espressione booleana. Per verificare la condizione possiamo usare <code>if</code>, <code>if-else</code>, <code>if-elif-else</code>, anche annidati.</p><p>La struttura delle istruzioni condizionali è la seguente:</p><ul><li><code>if...then...fi</code> istruzioni</li><li><code>if...then...else...fi</code> istruzioni</li><li><code>if..elif..else..fi</code></li><li><code>if..then..else..if..then..fi..fi..</code> (condizionali annidati)</li></ul><p><strong><strong>S</strong>i<strong>nta</strong>ssi</strong>:</p><pre><code class="language-bash">if [[ condizione ]]
then
	istruzione
elif [[ condizione ]]; then
	istruzione 
else
	fai questo per default
fi</code></pre><p>Per creare confronti significativi possiamo usare AND <code>-a</code> e OR <code>-o</code>.</p><p>L'istruzione seguente si traduce in: se <code>a</code> è maggior di 40 e <code>b</code> è minore di 6.</p><p><code>if [ $a -gt 40 -a $b -lt 6 ]</code></p><p><strong><strong>E</strong>se<strong>mp</strong>io</strong>: troviamo il tipo di triangolo leggendo le lunghezze dei suoi lati.</p><pre><code class="language-bash">#!/bin/bash

read a
read b
read c

if [ $a == $b -a $b == $c -a $a == $c ]
then
echo EQUILATERO

elif [ $a == $b -o $b == $c -o $a == $c ]
then 
echo ISOSCELE
else
echo SCALENO

fi</code></pre><p><strong>Risultato</strong>:</p><p>Caso di test #1</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_5.png" class="kg-image" alt="image-113" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_5.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_5.png 780w" sizes="(min-width: 720px) 720px" width="780" height="430" loading="lazy"></figure><p>Caso di test #2</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_6.png" class="kg-image" alt="image-114" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_6.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_6.png 780w" sizes="(min-width: 720px) 720px" width="780" height="430" loading="lazy"></figure><p>Caso di test #3</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_7.png" class="kg-image" alt="image-115" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_7.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_7.png 780w" sizes="(min-width: 720px) 720px" width="780" height="430" loading="lazy"></figure><h3 id="cicli"><strong>Cicli</strong></h3><p>I cicli for ti consentono di eseguire istruzioni per uno specifico numero di volte.</p><h4 id="eseguire-cicli-con-i-numeri-"><strong>Eseguire cicli con i numeri:</strong></h4><p>Nell'esempio che segue il ciclo verrà eseguito per 5 volte.</p><pre><code class="language-bash">#!/bin/bash

for i in {1..5}
do
    echo $i
done</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/news/content/images/2022/06/Looping-with-numbers.png" class="kg-image" alt="Looping-with-numbers" width="600" height="400" loading="lazy"></figure><h4 id="eseguire-cicli-con-le-stringhe-"><strong>Eseguire cicli con le stringhe:</strong></h4><p>Possiamo eseguire cicli anche con le stringhe.</p><pre><code class="language-bash">#!/bin/bash

for X in verde bianco rosso  
do
	echo $X
done</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_9.png" class="kg-image" alt="Looping-with-strings" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_9.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_9.png 780w" sizes="(min-width: 720px) 720px" width="780" height="247" loading="lazy"></figure><h4 id="cicli-while"><strong>Cicli while</strong></h4><p>I cicli while verificano una condizione ed eseguono il ciclo fino a quando la condizione rimane vera. Occorre fornire un'istruzione che incrementi un contatore per controllare l'esecuzione del ciclo.</p><p>Nell'esempio qui sotto <code>(( i += 1 ))</code> è l'istruzione che gestisce il contatore, che viene incrementato del valore di <code>i</code>.</p><p><strong><strong>E</strong>sempio<strong>:</strong></strong></p><pre><code class="language-bash">#!/bin/bash
i=1
while [[ $i -le 10 ]] ; do
   echo "$i"
  (( i += 1 ))
done
</code></pre><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_10.png" class="kg-image" alt="image-153" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_10.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_10.png 780w" sizes="(min-width: 720px) 720px" width="780" height="247" loading="lazy"></figure><h3 id="leggere-file"><strong>Leggere file</strong></h3><p>Supponi di avere un file <code>file_di_esempio.txt</code> che contiene quanto segue:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_11-1.png" class="kg-image" alt="image-151" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_11-1.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_11-1.png 659w" width="659" height="199" loading="lazy"></figure><p>Possiamo leggere il file riga per riga e stampare il risultato nella console.</p><pre><code class="language-bash">#!/bin/bash

LINE=1

while read -r CURRENT_LINE
	do
		echo "$LINE: $CURRENT_LINE"
    ((LINE++))
done &lt; "file_di_esempio.txt"</code></pre><p><strong>Risultato<strong>:</strong></strong></p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_12.png" class="kg-image" alt="Lines with line number printed" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_12.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_12.png 714w" width="714" height="205" loading="lazy"><figcaption>Stampa del numero di riga seguito dal contenuto di ogni riga</figcaption></figure><h3 id="come-eseguire-comandi-racchiusi-tra-caratteri-backtick-accento-grave-"><strong>Come eseguire comandi racchiusi tra caratteri backtick (accento grave)</strong></h3><p>Se devi includere il risultato di un comando complesso nel tuo script, puoi scrivere l'istruzione racchiusa tra caratteri backtick (`)</p><h4 id="sintassi-"><strong>Sintassi:</strong></h4><p>var= ` <code>commandi</code> `</p><p><strong><strong>E</strong>sempio</strong>: supponi di voler ottenere il risultato di un elenco di punti di mount che contengono <code>tmpfs</code> nel loro nome. Possiamo confezionare un'istruzione come questa: <code>df -h | grep tmpfs</code>.</p><p>Per includerla nello script bash e ottenerne il risultato, possiamo racchiuderla tra caratteri backtick.</p><pre><code class="language-bash">#!/bin/bash

var=`df -h | grep tmpfs`
echo $var</code></pre><p>Risultato:</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_13.png" class="kg-image" alt="image-118" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_13.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_13.png 908w" width="908" height="199" loading="lazy"></figure><h3 id="come-ottenere-argomenti-per-gli-script-da-riga-di-comando"><strong>Come ottenere argomenti per gli script da riga di comando</strong></h3><p>È possibile passare argomenti allo script per l'esecuzione.</p><p><code>$@</code> rappresenta la posizione dei parametri, a partire da uno.</p><pre><code class="language-bash">#!/bin/bash

for x in $@
do
    echo "Il parametro digitato è $x"
done</code></pre><p>Eseguilo in questo modo:</p><p><code>./nome_script arg1 arg2</code></p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_14.png" class="kg-image" alt="image-155" srcset="https://www.freecodecamp.org/italian/news/content/images/size/w600/2023/01/shell-scripting-crash-course-ex_14.png 600w, https://www.freecodecamp.org/italian/news/content/images/2023/01/shell-scripting-crash-course-ex_14.png 908w" width="908" height="199" loading="lazy"></figure><h2 id="come-automatizzare-gli-script-pianificandoli-con-job-di-cron"><strong>Come Automatizzare gli Script Pianificandoli con Job di cron</strong></h2><p>Cron è un'utilità presente nei sistemi Unix che consente di &nbsp;pianificare delle attività (job). Si possono pianificare job per un'esecuzione giornaliera, settimanale, mensile o a un dato momento del giorno. L'automazione in Linux si appoggia pesantemente sui job di cron.</p><p>Di seguito la sintassi per pianificare un job in cron:</p><pre><code class="language-bash"># Esempio di job per Cron
* * * * * sh /percorso/dello/script.sh</code></pre><p>Qui gli asterischi rappresentano rispettivamente il minuto, l'ora, il giorno del mese, il mese, il giorno della settimana.</p><p>Qui sotto alcuni esempi di pianificazione di job.</p><!--kg-card-begin: markdown--><table>
<thead>
<tr>
<th>PIANIFICAZIONE</th>
<th>DESCRIZIONE</th>
</tr>
</thead>
<tbody>
<tr>
<td>5 0 * 8 *</td>
<td>Alle 00:05 di ogni giorno in agosto</td>
</tr>
<tr>
<td>5 4 * * 6</td>
<td>Alle 04:05 di ogni sabato</td>
</tr>
<tr>
<td>0 22 * * 1-5</td>
<td>Alle 22:00 di ogni giorno della settimana da lunedì a venerdì</td>
</tr>
</tbody>
</table>
<!--kg-card-end: markdown--><p>Puoi avere maggiori informazioni su cron leggendo questa <a href="https://guide.debianizzati.org/index.php/Utilizzo_del_servizio_di_scheduling_Cron">guida</a>.</p><h2 id="come-verificare-script-gi-esistenti-in-un-sistema"><strong>Come Verificare Script Già Esistenti in un Sistema</strong></h2><h3 id="usare-crontab"><strong>Usare crontab</strong></h3><p><code>crontab -l</code> elenca gli script già pianificati per l'utente connesso.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/news/content/images/2022/03/image-103.png" class="kg-image" alt="My scheduled scripts" width="600" height="400" loading="lazy"><figcaption>I miei script programmati</figcaption></figure><h3 id="usare-il-comando-find"><strong>Usare il comando find</strong></h3><p>Il comando <code>find</code> aiuta a localizzare dei file in base a certi modelli. Visto che la maggior parte degli script ha estensione <code>.sh</code>, possiamo usare il comando find per trovare degli script in questo modo:</p><figure class="kg-card kg-code-card"><pre><code class="language-bash">find . -type f -name "*.sh"</code></pre><figcaption>`</figcaption></figure><p>Dove:</p><ul><li><code>.</code> rappresenta la directory corrente, ma puoi modificare il percorso secondo necessità</li><li><code>-type f</code> indica che il tipo di file che stiamo cercando è un file di testo</li><li><code>*.sh</code> dice di trovare corrispondenza con tutti i file il cui nome finisce per <code>.sh</code>.</li></ul><figure class="kg-card kg-image-card kg-width-wide"><img src="https://www.freecodecamp.org/news/content/images/2022/03/image-159.png" class="kg-image" alt="image-159" width="600" height="400" loading="lazy"></figure><p>Se vuoi saperne di più circa il comando find puoi consultare <a href="https://www.freecodecamp.org/news/how-to-search-for-files-from-the-linux-command-line/"></a><a href="https://guide.debianizzati.org/index.php/Pagina_principale">questo articolo</a>.</p><h2 id="riepilogo"><strong>Riepilogo</strong></h2><p>In questo tutorial abbiamo imparato le basi dello shell scripting. Abbiamo esaminato esempi e sintassi che possono esserci utili per scrivere programmi.</p><p>Cosa preferisci tra quello che hai imparato in questo tutorial? Fammelo sapere su <a href="https://twitter.com/hira_zaira">Twitter</a>!</p><p>Puoi leggere i miei altri post <a href="https://www.freecodecamp.org/news/author/zaira/">qui</a>.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
