[Bash] Come utilizzare le variabili in bash per realizzare script shell

Desideri ricevere supporto tecnico informatico? Hai qualche domanda di ambito informatico? Pubblicala qua!
Rispondi
Aaron
Messaggi: 2
Iscritto il: 30/03/2022, 14:21

Salve, non capisco bene le variabili, perché non posso fare una cosa del genere?

Codice: Seleziona tutto

#!/bin/bash

for i in {0..9}
do 
	unzip $i.zip
done
o anche una cosa del genere

Codice: Seleziona tutto

echo Scrivi la destinazione
read destinazione
cd $destinazione
Non sembra avere effetto
Avatar utente
Dragone2
Amministratore
Messaggi: 114
Iscritto il: 30/07/2014, 18:35
Località: Italia
Contatta:

Ciao,
Nello script che hai indicato contenente il ciclo for, viene fatto un ciclo che va da 0 a 9 e ti estrae quindi tutti i files 0.zip, 1.zip, ecc. fino a 9.zip.

Ovviamente questo avviene se sulla tua distribuzione GNU/Linux è presente il pacchetto 'unzip'.

Se sei su debian / ubuntu, lo installi con

Codice: Seleziona tutto

 apt install unzip -y
Per quanto riguarda il resto, beh, sull'echo mancano le virgolette e quindi è sintatticamente errato. Quindi il tuo script diventerebbe:

Codice: Seleziona tutto

#!/bin/bash
echo "Sono nel percorso:"
pwd
echo "Scrivi la destinazione:"
read destinazione
cd $destinazione
echo "Mi trovo nel percorso:"
pwd
Eseguendo lo script noterai che la tua shell rimane nella tua attuale directory. Questo è perché quando lanci uno script, viene avviato un processo a sé stante che termina quando lo script finisce. Per questo non sembra eseguire il cd, ma in realtà lo fa. Infatti, se eseguo lo script ho il seguente output:

Codice: Seleziona tutto

Sono nel percorso:
/home/dragone2
Scrivi la destinazione:
/var
Mi trovo nel percorso:
/var
Ma la mia shell è rimasta su /home/dragone2 e non è andata in /var

Spero di averti chiarito un po'. Ciò che fai all'interno di uno script non influenza necessariamente l'attuale shell. L'unico modo per influenzare l'attuale shell è per esempio digitarci direttamente le varie istruzioni.
Immagine
Aaron
Messaggi: 2
Iscritto il: 30/03/2022, 14:21

Ciao!
Grazie mille per avermi risposto.
non so cosa avevo combinato nello script 1 perché il risultato da te descritto era proprio il mio obbiettivo, adesso ho riprovato e funziona tutto.
Riguardo il secondo script sei stato molto chiaro e ho capito dove sbagliavo.

Ti ringrazio per l'aiuto
Rispondi