Bash scripting - espansioni non quotabili: differenze tra le versioni

m
Riga 98: Riga 98:
<pre>
<pre>
# crea un file in ogni directory, se non esiste già
# crea un file in ogni directory, se non esiste già
touch -- ./*/"file" # SBAGLIATO! (per come avviene l'espansione)
touch -- ./*/"file"   # SBAGLIATO! (per come avviene l'espansione)


# aggiorna il tempo di accesso e modifica dei file (se esistenti) in ogni directory
# aggiorna il tempo di accesso e modifica dei file (se esistenti) in ogni directory
touch ./*/"file"    # SBAGLIATO! (sarebbe corretto SOLO se almeno un file esiste)
touch -- ./*/"file"    # SBAGLIATO! (sarebbe corretto SOLO se almeno un file esiste)
# forma corretta, sempre e solo con ciclo for e if [ ... ]
# forma corretta, sempre e solo con ciclo for e if [ ... ]
for file in ./*/"file"
for file in ./*/"file" # espande ai file GIÀ esistenti
do
do
  # il confronto serve nel caso in cui l'espansione resti ./*/file
  # e la directory * non esista, ma non serve a nient'altro
  # nuovi file non verrebbero creati perché l'espansione avviene
  # solo con le corrispondenze trovate!
   if [ -e "$file" ]; then
   if [ -e "$file" ]; then
       touch -- "$file"
       touch -- "$file"
Riga 111: Riga 115:


# forma corretta del comando iniziale per creare un file in ogni directory
# forma corretta del comando iniziale per creare un file in ogni directory
for dir in ./*/     # SOLO la parte già esistente nell'espansione!
for dir in ./*/       # SOLO la parte già esistente nell'espansione!
do
do
   if [ -e "$dir" ]; then
   if [ -e "$dir" ]; then
3 581

contributi