Bağımsız değişkenden daha yeni dosyaları kontrol etmek için komut dosyası, -nt [kapalı] komutunu kullanmaya yardım edin


2

Dizindeki dosyaları argüman olarak verilenden daha yeni gösteren bir komut dosyası oluşturmaya çalışıyorum, ancak bir sorunla karşı karşıya kalıyorum. Şu anda var:

for f in *; do 
    if [["$f" -nt "$1"]]; then 
        echo "$f"
    fi 
done

Ancak bu, yinelenen dosyalara referans olarak komutların bulunamadığını bildiren bir hata veriyor. Bu betiğin sorunlarını nasıl çözebilirim?


set -xKomut dosyanızın üstüne bir ekle ? Çıktı size sorunun ne olduğu hakkında oldukça güçlü bir fikir vermelidir.
Zoredache,

Yanıtlar:


1

Etrafa boşluk ihtiyaç [[ve]]

for f in *; do
    if [[ "$f" -nt "$1" ]]; then
        echo "$f"
    fi
done

Boşlukların olmadığı bir dizi "komut bulunamadı" hatası alırsınız. Bunun nedeni, kabuğun adına göre bir komut [["$f"arayarak onu bulamamasıdır. Çalıştırmak istediğiniz komut [[.

Alternatif

Döngü için gerek kalmadan:

find . -maxdepth 1 -newer "$1"

0

Önce [[ve sonra başka bir boşluk gerekir ]]. Bu bir aktarımıdır [geleneksel gerçek bir yürütülebilir dosya, ( /bin/[, sembolik olarak /bin/test) - Eğer olarak değerlendirilebilir zorlamak için bir alan ihtiyacı [ile expressionyerine argümanlar [expression.

[[Bir bash anahtar sözcüğü olsa da, benzer bir gereksinimi vardır.

Ayrıca, [mümkün olduğunca mümkün olduğunca POSIX uyumlu komut dosyalarınızda kullanılması önerilir . [[standart değildir ve bu nedenle tüm POSIX mermilerinde çalışmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.