Próbuję sprawdzić, czy kolumny pliku użytkownika zwanego testfile.txt są poprawnie nazwane (powinny być nazwane VAR1, VAR2, VAR3). Plik wygląda jak

var1    var2    var3
5       6       7

Myślałem, że następujące powinny działać:

read i j k < testfile.txt

echo "${k}"

if [[ "${i}" != "var1" || "${j}" != "var2" || "${k}" != "var3" ]]; then
  echo "input incorrect"
else
  echo "input correct"
fi

Ale to zwroty

var3
input incorrect

Więc chociaż ostatnia kolumna wydaje się być poprawnie nazwana, test nie powiedzie się. Jeśli testuję tylko nazwiska pierwszych dwóch kolumn, działa, ale test dla ostatniej kolumny jest zawsze uważany za fałszywy.

Jak mogę skorygować skrypt, aby również poprawnie przetestować dla wartości ostatniego nagłówka kolumny?

0
MartijnVanAttekum 28 luty 2019, 17:09

1 odpowiedź

Najlepsza odpowiedź

Jeśli chcesz po prostu rozebrać CR z linii nagłówka:

read i j k <<< $( sed '1 s/\r//g; 2q;' testfile.txt )

Jeśli chcesz oczyścić cały plik:

tr -d "\r" <testfile.txt>x && mv x testfile.txt
1
Paul Hodges 28 luty 2019, 14:30