Strona 1 z 1

bash - jak podmienić

: 25 kwietnia 2007, 15:24
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 :)

: 25 kwietnia 2007, 19:54
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.

: 25 kwietnia 2007, 21:24
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.

: 25 kwietnia 2007, 21:58
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"