Nowe posty

Autor Wątek: Bash sortowanie pliku  (Przeczytany 6528 razy)

amajcher

  • Gość
Bash sortowanie pliku
« dnia: 2013-01-22, 09:36:02 »
#!/bin/bash
argc=$[$#];
for ((I=$argc; I>=1; I --))
do
        eval echo "\\$$I"
    eval sort -n "\\$$I"
done

mam taki sobie programik niby sortuje pliki ktore sa argumentami skryptu ale on tylko je wyswieta a niezmiania samego pliku, a jak zostawie sort -n "\\$$I" to wyswietla ze niewidzi pliku co trzeba poprawic ??

darkdancer

  • Gość
Bash sortowanie pliku
« Odpowiedź #1 dnia: 2013-01-23, 12:15:03 »
A jak ma je "zmieniać" skoro sort wyrzuca rezultat działania domyślnie na standardowe wyjście? Daj przekierowanie do innego/tymczasowego pliku lub użyj flagi -o (man sort). I nie zakładaj nowych wątków bez sensu skoro rzecz tyczy się tego samego skryptu.

amajcher

  • Gość
Bash sortowanie pliku
« Odpowiedź #2 dnia: 2013-01-24, 21:02:41 »
zrobiłem tak :
#!/bin/bash
argc=$[$#];
for ((I=$argc; I>=1; I --))
do
        eval echo "\\$$I"
    eval sort -n "\\$$I" -o "\\$$I"
done

dziala ale wsumie to nie wiem czy wszystko jest optymalne

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
Bash sortowanie pliku
« Odpowiedź #3 dnia: 2013-01-28, 11:04:16 »
Lepiej użyć shift-a do przejrzenia wszystkich argumentów:
#!/bin/bash
while [ -n "$1" ]; do
  echo "$1"
  sort -n "$1" -o "$1"
  shift
done
Pozdrawiam.