“Okuma satırını” son satırını nasıl belirleyebilirim?


3

"Okuma sırasında" satırının sonunu nasıl belirleyebilirim?

Örneğin:

    while read line; do
       if [ "$line" = "last line" ]; then
           echo "this line is the last one ($line);"
       else
           echo "$line"
       fi

    done <<< "$lines"

Yanıtlar:


3

Burada tahmin edilebilir olmayan bir giriş varsa (örn. Manuel giriş) bir sorun var. Geleceğe önemsizce söyleyemezseniz (ör. while read lineYapı yoluyla ) sonrakinin ne olduğunu bilirsiniz. Ayrıca, giriş durduğunda döngü durduğundan, belirli bir satırı saklamanız ve "dönüşe döndüğünden" sonra üzerinde hareket etmeniz gerekecektir . Daha önce değil, sonuncusu olup olmadığını biliyor musunuz? Girdi sabit bir dizge veya dosya ise, pratik olandan daha teorik bir konudur.

İstediğinizi yapmak için bir prototip:

unset lastline
while read line; do
    if ! [ -z "$lastline" ]; then
        echo "$lastline"
    fi
    lastline=$line
done <<< "$lines"
echo "This is the last one: $lastline"
  • unset lastlineAynı betiği örneğin bir terminalde birden çok kez çalıştırırsanız, o $lastlinezamandan beri boş olmayabilir. Bu echobir sorun olabilirse , en sondan sonra da temizleyebilirsiniz .
  • ! [ -z "$lastline" ]$lastlinedeğişken boş değilse ( true , teknik olarak dizenin uzunluğu sıfır değilse) true değerini döndürür . Bakın man testbu testlere alışık değilseniz.

(Bağırsaklarım size gerçekte ne yapmaya çalıştığınızı sormak istemesine rağmen :-).)

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.