for loop (f in * .txt) genera un errore se non esiste alcun file * .txt


1

Ho un piccolo script bash che assomiglia a questo:

#!/bin/sh
for f in ./*.txt
do
 f=$(basename $f)
 echo "Processing $f"
 scp somewhere
 mv $f done/`basename $f`
done

Funziona perfettamente, ma non appena non sono rimasti file, verrà generato questo errore: *.txt: No such file or directory mi chiedo perché entri nel ciclo e come posso farlo (senza un nuovo se forse?)

Risposte:


1

Se non è presente alcun *.txtfile, la stringa rimane non espansa così com'è e il ciclo viene inserito. Per evitarlo, imposta l' nullglobopzione.

shopt -s nullglob
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.