Ho un semplice script bash, simple.sh, come segue:Perché non posso passare una directory come argomento ad un ciclo for in bash?
#/usr/local/bin/bash
for i in $1
do
echo The current file is $i
done
Quando eseguo con il seguente argomento:
./simple.sh /home/test/*
sarebbe solo la stampa e la lista fuori il primo file che si trova nella directory.
Tuttavia, se cambio simple.sh a:
#/usr/local/bin/bash
DIR=/home/test/*
for i in $DIR
do
echo The current file is $i
done
sarebbe correttamente stampare i file all'interno della directory. Qualcuno può aiutare a spiegare perché l'argomento passato non sta mostrando lo stesso risultato?
Questo dovrebbe essere '" $ @ "' quindi funziona anche per i file con spazi nel nome. – Jens
Sì, ovviamente questo dovrebbe essere come "$ @" ... – Oni1
E con '" $ i "' lo spazio bianco viene mantenuto anche nel messaggio. Si tratta di dettagli :-) – Jens