Skocz do zawartości
Draconis

[Bash]Zmienne w nazwach zmiennych

Rekomendowane odpowiedzi

Witam.

Piszę niezbyt skomplikowany skrypt do szkoły i mam drobny problem.

Mam zmienne, które są właściwe stałe.

A00, A01 ... A09

A10, A11 ... A19

...

z wartościami tekstowymi.

 

Mam też zmienne x i y, które przybierają jednocyfrowe wartości

Mam też kod:

       
       k='    A$x$y # Próbowałem tu różnych kombinacji, lecz żadna nie dawała oczekiwanych rezultatów
       echo $k     # -----------------------------------||-----------------------------------------

Czy jest możliwe, i jeżeli jest, wyświetlenie zawartości zmiennej odpowiadającej k, zamiast k?

Przykładowo, jeżeli A00="__________" i chciałbym, żeby to zostało wyświetlone, zamiast "$A00"

 

Pozdrawiam i dziękuję za wszelką pomoc.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

A nie pomyliłeś czasem Batch z BASH? Batch to inaczej pliki wsadowe dla systemu Windows. Bash to prędzej w Linuxie znajdziesz.

 

Dla Batch:

set variable=To jest jakis tekst
echo %variable%

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

@Raalsky

Nie, nic nie pomyliłem, skrypt ma być w Bashu

 

@gnysek

Niestety nie o to mi chodzi, działałoby gdybym z góry wiedział co chcę wyświetlić

Może lepiej umieszczę większy kawałek kodu, omijając zbędne rzeczy.

A00="aa"
A01="ab"
A02="fa af" #wartości są inne, i jest więcej zmiennych, ale to uproszczenie
...
x=0 #w kodzie zamiast 0 jest losowana liczba.
y=0
while [ $y -le  9 ]; do
k='$'A$x$y
echo $k
y=$[y + 1]
done

 

W wyniku mam teraz

$A00
$A01
$A02
$A03
$A04
$A05
$A06
$A07
$A08
$A09

A chciałbym mieć

aa
ab
fa fa ...

 

Próbowałem już wcześniej kombinacji w stylu ${k},${$k}(jakkolwiek głupio to wygląda to i tak nie działa)i innych, zmieniałem też k='$'A$x$y na k=A$x$y bądź z jakąś inną kombinacją cudzysłowów, apostrofów obu rodzajów itp.

k=A$x$y

echo ${k}

...

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Może jak w PHP, echo $$k ? :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Już próbowałem, niestety w Bashu w zmiennej $$ zawarty jest ID procesu

A=3

więc

kiedy id procesu wynosi 3660

echo $$A da mi 3660A

echo $$$A da natomiast 36603.

 

Mam inny pomysł na skrypt, ale w tamtym jeszcze mniej się orientuję.

Pobieram pierwszą komórkę z pliku komendą:

li=`head -n 1 plik`

Wie ktoś może, czy da się usunąć pierwszą linijkę z pliku a pozostałe przesunąć w górę?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×