Ben argüman olarak, bir dizi dosya ve / veya dizin alır basit bir bash işlevi yazmaya çalışıyorum. Olması gerekiyor:
- Dosya adlarını tam olarak nitelendirin.
- Onları sıralayın.
- Kopyaları kaldırın.
- Gerçekten var olan her şeyi yazdırın.
- Varolmayan dosyaların sayısını döndürür.
Neredeyse istediğimi yapan bir senaryom var, ama sıralama düşer. Komut dosyasının durduğu haliyle dönüş değeri doğru, ancak çıktı (sıralanmamış ve yineleniyor) değil. | sort -u
Belirtildiği gibi ifadeyi kaldırırsam, çıkış doğrudur ancak dönüş değeri her zaman doğrudur 0
.
NB Sorunu çözmek için daha basit çözümler bekliyoruz ama soru gerçekten neden bu kodda meydana geliyor. Yani, neden borunun eklenmesi betiğin değişkeni artırdığını gösteriyor r
?
İşte senaryo:
function uniqfile
{
local r=0
for arg in "$@"
do
readlink -e "$arg" || (( ++r ))
done #| sort -u ## remove that comment
return $r
}
for arg in "$@"
içinfor arg
. "Eğer 'KELİMELERDE ...' mevcut değilse, "in" $ @ "" olduğu varsayılır. " - yardım