Wpis z mikrobloga

#bash #linux #sysadmin

Mirki

mam sobie pliczek liststoparse.txt

profile/default/modyyy
profile/default/modyyyy
profile/vietnam/modyyy
profile/vietnam/modyyyy
profile/ww2/modyyy
profile/ww2/modyyyy

zawierający powyższe linijki. Docelowo ma parsować listy zawarte w plikach modyyy oraz modyyyy (mniejsza o implementację). Chciałem po prostu do jednej listy dodać te listy bez duplikatów oraz żeby nie powtarzały się poprzednie operacje. Dlatego zmontowałem taki oto kod:

cat liststoparse.txt | grep profile | while read i
do
cat liststoparse.txt | grep profile | while read j
do
if [ "$i" = "$j" ]
then
echo "$i" >> done.txt
elif [ "$i" = "cat done.txt | grep $i" ]
then
echo "pomijam"
else
echo "Teraz $i kontra $j"
break
fi
done
done

gdzie przy else ma się wykonać później kod docelowy.

Niestety efekt tegoż jest taki:

pomijam
pomijam
pomijam
pomijam
pomijam
Teraz profile/default/modyyyy kontra profile/default/modyyy
Teraz profile/vietnam/modyyy kontra profile/default/modyyy
Teraz profile/vietnam/modyyyy kontra profile/default/modyyy
Teraz profile/ww2/modyyy kontra profile/default/modyyy
Teraz profile/ww2/modyyyy kontra profile/default/modyyy

Zawartość pliku done.txt po wykonaniu skryptu:

profile/default/modyyy

Na logikę powinno działać. Co robię źle?

  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach