-
1. Data: 2010-08-07 06:37:28
Temat: bash -- dziwaczny znak powrotu karetki w Unix Tools
Od: "slawek" <s...@h...pl>
Skrypt ma znaleźć liczbę linii pewnego pliku foo.txt i umieścić ją w
zmiennej lines, a potem wywołać polecenie cmd z zakresem linii, np.
usercommand 1-69 :
lines=`cat foo.txt | wc - l | sed 's/ //g'`
echo "$lines"
usercommand 1-$lines
Czyli wc nie wyświetla nazwy pliku, sed wycina początkowe
spacje.Teoretycznie powinno działać, ale pod bash z Unix Tools (tj. powłoka
bash dla MS Windows plus przekompilowane programiki "linuksowe") rezultat
jest dziwaczny - komenda cmd jest zamazywana przez znalezioną liczbę linii,
np:
1-69command
zamiast spodziewanego
usercommand 1-69
Pomaga zmiana w skrypcie bash:
lines=`cat foo.txt | wc - l | sed 's/ //g' | tr -d '\r'`
echo "$lines"
usercommand 1-$lines
usuwająca znak powrotu karetki - czyli to co różni od siebie "windowsiane
\n" od "uniksowego \n". (Zapisane zmiennej lines w pliku ujawniło że tam
jest.)
Czyżby błąd w UnixTools? A może ja coś źle robię?
slawek