[Rozwiązany] [BASH] Przekazywanie zmiennych do funkcji

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
Awatar użytkownika
kapat
Sędziwy Jeż
Sędziwy Jeż
Posty: 62
Rejestracja: 09 mar 2008, 21:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

[Rozwiązany] [BASH] Przekazywanie zmiennych do funkcji

Post autor: kapat »

Witam :)
Mam taki oto kod:

Kod: Zaznacz cały

#! /bin/bash

#! /bin/bash

#################################################################################
# 
### SKRYPT AKTUALIZUJĄCY ŚREDNIĄ CENE PALIWA
# Autor: Kapat
# Mail:     kapusciarek[at]gmail.com
#
##### History: ##################################################################
#
## Wersja 0.1 - Monday, January 31 2011   
#
################################################################################


# Link do strony i nazwa miejscowości (statystyki)
LINK="http://www.e-petrol.pl/index.php/notowania/rynek-krajowy/ceny-stacje-paliw"
CITY="Warszawa" #Wyszukiwane Miasto na stronie

# Lokalizacja Plików Tymczasowych
FILENAME="/tmp/dump.tmp"
BASE_LOC="/tmp/base.tmp"

# Miejsce zapisywania Pliku z danymi
STATISTIC="/media/Nowy/Dokumenty/Work/Hotele_Korona/05.Rozliczenia/Paliwo.txt"

# Tworzenie Pliku CSV ze statystykami.
Create_Files () {
    _STATISTIC=${1}
    if [ -e $_STATISTIC ]
        then
            echo -n
        else
            touch $_STATISTIC
    fi
}

# Pobieranie Strony 
DownBase () {
    w3m -no-cookie -dump_source ${1} > ${2}
}

# Parsowanie Danych.
ParseBase (){
    _FILENAME=${1}
    _BASE_LOC=${2}
    _CITY=${3}
    _STATISTIC=${4}
    
    cat $_FILENAME | sed -ne '/<tr/,/<\/tr>/p'|sed 's/<[^<>]*>//g' > $_BASE_LOC
    
    _POS=$(grep -n $_CITY $_BASE_LOC | sed 's/:.*//g')
    _START=$(($_POS-1)) #NUMER Początkowy danych
    _END=$(($_POS+4)) #NUMER Końcowy danych
    _BASE=$(sed -n -e "$_START,$_END p" $_BASE_LOC | sed 's/$/;/g'| tr -d '\n')
    
    if [ $(tail -n 1 $_STATISTIC) = $_BASE ]
        then
            echo -n
        else
            echo $_BASE >> $_STATISTIC
    fi
    
}

Create_Files "$STATISTIC"
DownBase "$LINK" "$FILENAME"
ParseBase "$FILENAME" "$BASE_LOC" "$CITY" "$STATISTIC"
Problem jest z przekazywaniem parametru POS (funkcja ParseBase), Raz jest (wyświetla się) raz nie? Ktoś ma pomysł dlaczego tak się dzieje?

Edit: Problem dotyczył praw dostępu do pliku.
Pozdrawiam. Kapat

"Informatyk nie czyta, on przetwarza informacje."
Awatar użytkownika
borzole
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 127
Rejestracja: 10 sie 2010, 11:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: [BASH] Przekazywanie zmiennych do funkcji

Post autor: borzole »

spróbuj tak

Kod: Zaznacz cały

#!/bin/bash

url='http://www.e-petrol.pl/index.php/notowania/rynek-krajowy/ceny-stacje-paliw'
# ------------------------------------------------------------------------------
get_raw_page(){
	# Funkcja zwraca sformatowaną stronę
	curl "$url" |
		# formatuje kod tak, aby każdy tag był w osobnej linii
		sed -e 's/</\n</g ; s/>/>\n/g ' |
		# usuwam puste linie
		sed -e '/^[[:space:]]*$/d'
}
# ------------------------------------------------------------------------------
get_data(){
	city=$1
	echo -e "$raw" | grep -v ^\< | grep -B 1 -A 4 "$city"
}
# ------------------------------------------------------------------------------
# surowa strona
raw=$(get_raw_page)
# tabela z danymi dla miasta Warszawa
data=($(get_data Warszawa))

# prosty test
echo Test: ${data[1]}
# wszystko
for p in Data City Pb98 Pb95 ON LPG ; do
	echo $p : ${data[$i]}
	((i++))
done | column -t
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości