Bir dizinde dosyaların listesini depolayan var adında bir değişken var. Tüm dosyalar arasında dolaşıyorum ve bir dizin bulursam ekrana "Dizin" verdim. aşağıdaki kod:
var=$(ls dir)
for file in $var; do
if [ -d $dir/$file ]; then
echo "Directory"
fi
done
2 sorum var:
1 - Bunu bir fonksiyonun içinde yapıyorum ve $ file değişkeninin yerel kalmasını istiyorum, böylece fonksiyonum bittiğinde ona erişemiyorum. Bu değişkeni yerel olarak nasıl ayarlayabilirim? Yapamam for local file in $var;
ve döngüden önce $ dosyasını bildiremiyorum.
2 - Benim döngü ne zaman çalışmıyor $(ls dir)
adın içinde boşluk olan bir dosya içeriyor. Örneğin $dir
3 dosya, dosya1 dosya 2 ve dosya3, $var
sadece file1 ve file3'ü gerçek dosyalar olarak tutabilir, ancak file 2 dosyaya ve 2'ye ayıracağı için çalışmayacaktı.
ls -Q dir
. bu, her dosya adının etrafına tırnak koyacaktır. Bu sorun, kişilerin ayrıştırılmasından kaçınılmasının tavsiye edilmesinin bir parçasıdır ls
çıktı ve yerine kullan find
.
"$file"
. daha karmaşık durumlar için kullanmak zorunda kalabilirsiniz$"$file"
.