Nowe posty

Autor Wątek: bash przypisanie zminej wartości  (Przeczytany 6070 razy)

lwiaros

  • Gość
bash przypisanie zminej wartości
« dnia: 2013-08-06, 21:04:39 »
czy jest możliwe przypisanie zmiennej w bashu  wyniku polecenia np cut -d: -f1

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
bash przypisanie zminej wartości
« Odpowiedź #1 dnia: 2013-08-06, 21:55:47 »
Tak.

zmienna=$(polecenie)
ewentualnie
zmienna=`polecenie`

lwiaros

  • Gość
bash przypisanie zminej wartości
« Odpowiedź #2 dnia: 2013-08-07, 10:00:48 »
przepraszam ale źle się wyraziłem chodziło mi jak wartość wyrażenia(wynik) zapisać do zmiennej i tam ją przechowywać np

grep -n 'cośtam' plik.txt | cut -d: -f1 #>>>i wynik zapisać do zmiennej

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
bash przypisanie zminej wartości
« Odpowiedź #3 dnia: 2013-08-07, 11:54:03 »
Standardowe wyjście z polecenia zapisujesz tak, jak napisał ultr w #2:

zmienna=$( grep -n 'cośtam' plik.txt | cut -d: -f1 )
ewentualnie:

zmienna=`grep -n 'cośtam' plik.txt | cut -d: -f1`

lwiaros

  • Gość
bash przypisanie zminej wartości
« Odpowiedź #4 dnia: 2013-08-07, 12:52:30 »
załapałem w końcu (wszystko przez to że myślę za dużo i plonta mi się język c i pascal) a to takie proste

Pozdrawiam

lwiaros

  • Gość
bash przypisanie zminej wartości
« Odpowiedź #5 dnia: 2013-08-09, 07:14:16 »
jak już jesteśmy przy zmiennych to jak zrobić w bash tak np  zmiena=zmiena +20

let "zmiena = zmiena +20"
da się inaczej ( i czym to się różni)

xavery

  • Gość
bash przypisanie zminej wartości
« Odpowiedź #6 dnia: 2013-08-09, 15:30:17 »
Cytat: lwiaros
jak już jesteśmy przy zmiennych to jak zrobić w bash tak np  zmiena=zmiena +20
Ja używam expr, w bashu najczęściej stosuje sie konstrukcję $(($zmienna + 20)). Można też użyć kalkulatorów bc lub dc.

lwiaros

  • Gość
bash przypisanie zminej wartości
« Odpowiedź #7 dnia: 2013-08-11, 06:59:03 »
ale $((#zmiena +20)) nie zachce działać w starszych shellach (by było najlepiej ją używać ale niestety, w sh też nie działa)

xavery

  • Gość
bash przypisanie zminej wartości
« Odpowiedź #8 dnia: 2013-08-12, 11:15:15 »
Cytat: lwiaros
ale $((#zmiena +20)) nie zachce działać w starszych shellach (by było najlepiej ją używać ale niestety, w sh też nie działa)
No przecież pytanie było o bash'a. Konstrukcja ta jest charakterystyczna tylko dla tej powłoki o czym wspominałem. Dlatego najbardziej lubię używać przenośnego expr.

darkdancer

  • Gość
bash przypisanie zminej wartości
« Odpowiedź #9 dnia: 2013-08-12, 14:10:45 »
Cytat: lwiaros
ale $((#zmiena +20)) nie zachce działać w starszych shellach (by było najlepiej ją używać ale niestety, w sh też nie działa)
Działa w dash, które jest linkowane jako sh np. w Ubuntu, działa w standardowym sh we freebsd. Dla uzyskania większej przenośności rzeczywiście można użyć i pewnie zalecane jest użycie expr. Jeśli taki skrypt miałby być wywoływany często i dla dużej ilości danych to i tak zamiast jakiegokolwiek shella lepiej użyć np. awk albo napisać to w perl/python czy innym (nie zachęcam do przepisywania wszystkiego w c...).