bash - jak podmieni

Potrzebujesz pomocy z C, C++, perl, python, itp.
jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

bash - jak podmienić

Post autor: jang »

Witam

Kod: Zaznacz cały

#!/bin/bash 

linki="/var/cache/apt/archives /repo/apt-mirror/mirror /media/iso1/pool /repo/reprepro/pool"

nazwy="archives apt-mirror iso1 reprepro"


for x in $linki; do
    echo $x | tr / _
    echo $x > /tmp/deb`echo "$x" | tr / _` 
done
Powyższa pętla for zapisze mi np.:
wartość $x czyli /var/cache/apt/archives do pliku deb_var_cache_apt_archives
a ja chciałbym aby wartość $x została zapisana do pliku /tmp/deb-archives
czyli jeśli $x = $linki(1) to ma zapisać do /tmp/deb-$nazwy(1)

Pozdrawiam i z góry dziękuję za wszelkie podpowiedzi :)
ilr
Posty: 76
Rejestracja: 29 stycznia 2007, 13:15
Lokalizacja: Universum

Post autor: ilr »

Może byc np. tak:

Kod: Zaznacz cały

#!/bin/bash

linki="/var/cache/apt/archives /repo/apt-mirror/mirror /media/iso1/pool /repo/reprepro/pool"

nazwy=(archives apt-mirror iso1 reprepro)
count=0

for x in $linki; do
    echo $x >/tmp/deb-${nazwy[count]}
    count=`expr $count + 1`
done 
Zresztą linki tez możesz przerobić na łańcuch i zmienić trochę ten skrypt.
jang
Beginner
Posty: 208
Rejestracja: 26 stycznia 2007, 14:38

Post autor: jang »

ilr bardzo dziękuję za pomoc.
Widzę teraz że zadałem bardzo głupie pytanie a dlaczego ? ano dlatego że nie wiedziałem że istnieje coś takiego jak expr. Kombinowałem jak koń pod górę z i++ i=i+1 co jak wiesz w bash'u nie działa.
ilr pisze:Zresztą linki tez możesz przerobić na łańcuch i zmienić trochę ten skrypt.
Rozważę Twoją propozycję nie mniej ten przykład jest taki a nie inny bo wymyślony na potrzeby tego pytania :-)

Jeszcze raz dziękuję i pozdrawiam.
ilr
Posty: 76
Rejestracja: 29 stycznia 2007, 13:15
Lokalizacja: Universum

Post autor: ilr »

Zamiast

Kod: Zaznacz cały

count=`expr $count + 1` 
w BASHu możesz użyć:

Kod: Zaznacz cały

let "count=$count + 1"
lub prościej:

Kod: Zaznacz cały

let "count += 1"
ODPOWIEDZ