Nowe posty

Autor Wątek: Zapisywanie zmiennych do zew. pliku tekstowego - problem  (Przeczytany 5716 razy)

annc

  • Gość
Witam wszystkich.


Zalozmy nastepujaca sytuacje:

Istnieje plik /etc/config. W tym pliku (tekstowym) zapisane sa zmienne, ktore includowane sa pozniej do innych skryptow. Plik ma taka postac:
ZM1='a b c'
ZM2='g'
ZM3='666 44 322'
itd

Chcialbym stworzyc skrypt, ktory poprosi uzytkownika o wpisanie czegos z klawiatury, i to cos zapisane zostanie pod okreslona zmienna w pliku config

Przyklad:
skrypt.sh
echo "Podaj XXXX"
Podajemy z klawiatury tekst "cosik losik"

Tekst "cosik losik" ma zostac zapisany w config pod ZM3, tak, zeby wygladalo to zgodnie ze schematem (ZM3='cosik losik')

Prosze o pomoc jak to wykonac.
Nie oczekuje oczywiscie konkretnego rozwiazania, lecz chociaz naprowadzenia na jakis konkretny pomysl jak to wykonac

Pozdrawiam i z gory dziekuje
Annc

arctgx

  • Gość
Zapisywanie zmiennych do zew. pliku tekstowego - problem
« Odpowiedź #1 dnia: 2008-04-07, 14:30:56 »
Poczytaj o poleceniu read w man bash (chyba że zamiast basha używasz innej powłoki) oraz o przekierowaniu >. W sieci, włącznie z linux.pl, znajdziesz sporo przykładów, od których warto zacząć eksperymenty, a z dopiero czasem zaczniesz używać powłoki bardziej świadomie, chyba że na podstawie samego manuala jesteś w stanie opanować powłokę... Ja jeszcze wielu mniej znanych rzeczy nie opanowałem po kilku latach zabawy z bashem.

annc

  • Gość
Zapisywanie zmiennych do zew. pliku tekstowego - problem
« Odpowiedź #2 dnia: 2008-04-07, 20:20:51 »
Nie jestem mistrzem w tym co robie, ale sporo skryptow juz napisalem - mnie lub bardziej zaawansowanych.
Znam zasade dzialania read i przekierowania.

Niestety - nadal nie mam pomyslu jak wrzucic do tego pliku KONKRETNA zmienna.

robiac cos na wzor:

echo "podaj"
read a;
echo "$a" >> /plik

nijak ma sie to do mojego problemu.
Nadal nie wiem jak zapisac to pod konkretna zmienna (np pod ZM3) w pliku.

arctgx

  • Gość
Zapisywanie zmiennych do zew. pliku tekstowego - problem
« Odpowiedź #3 dnia: 2008-04-07, 23:04:22 »
W tym co tu podajesz, do pliku wpadnie tylko wartość zmiennej. A jeśli chcesz, by prędzej była jej nazwa i znak równości (czyli instrukcja przypisania), dopisz to po prostu prędzej w echo:

read -p "podaj wartość ZM3:" ZM3
echo "ZM3=""$ZM3" >>plik
To miałeś na myśli?

annc

  • Gość
Zapisywanie zmiennych do zew. pliku tekstowego - problem
« Odpowiedź #4 dnia: 2008-04-08, 08:19:22 »
Ups - moj blad. NIedokladnie opisalem
Wszystko byloby w porzadku, ale co gdy w pliku znajduje sie juz taka zmienna, a ja chce ja tylko zaktualizowac ?
Caly problem w wyszukaniu jej, i nadpisaniu nowej wartosci.

xavery

  • Gość
Zapisywanie zmiennych do zew. pliku tekstowego - problem
« Odpowiedź #5 dnia: 2008-04-08, 10:44:17 »
Czy chodzi Ci o coś takiego (dla wartości ZM3):

 read -p "Podaj zmienną: " INPUT && sed -i "s/\\(ZM3=\\)\\(.*$\\)/\\1$INPUT/g" plik

maciasz

  • Gość
Zapisywanie zmiennych do zew. pliku tekstowego - problem
« Odpowiedź #6 dnia: 2008-04-08, 10:45:20 »
Skorzystaj z narzędzia sed.

annc

  • Gość
Zapisywanie zmiennych do zew. pliku tekstowego - problem
« Odpowiedź #7 dnia: 2008-04-08, 11:40:59 »
Otoz to.
Serdecznie dziekuje za pomoc - szczegolnie od xavery.
Dokladnie o to mi chodzilo.
No - moze prawie dokladnie (brakuje znakow ' ') - ale z tym juz sobie poradze.
Pora wiec zblizyc sie do SED'a - jakos mnie odstraszal do tej pory :)

Dziekuje jeszcze raz i pozdrawiam
Annc




EDIT:
Gdyby ktos potrzebowal - to calosc wyglada dokladnie tak:

read -p "Podaj zmienną: " INPUT && sed -i "s/\\(ZM3=\\)\\(.*$\\)/\\1'$INPUT'/g" a