[SOLVED]Bash - Losowe wyświetlanie zmiennych

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
kampo
Sędziwy Jeż
Sędziwy Jeż
Posty: 81
Rejestracja: 01 gru 2009, 21:52
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: LXDE
Architektura: x86_64
Kontakt:

[SOLVED]Bash - Losowe wyświetlanie zmiennych

Post autor: kampo »

Witam.
Potrzebuję algorytmu, który bedzie losowo wyświetlał zmienne przez Zenity,np:

a="blabla"
b="bleble"
c="tralala"

I za każdym razem algorytm wybiera inną zmienną,która wyświetla w Zenity.

I mam jeszcze jedno pytanie.Chciałbym się nauczyć pisać algorytmy.Możenie mi poradzić jakąś dobrą stronę z kursem?
Awatar użytkownika
thalcave
Przyjaciel
Przyjaciel
Posty: 821
Rejestracja: 08 lis 2006, 12:17
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86

Odp: Bash - Mieszanie zmiennych

Post autor: thalcave »

Tu jest drobna pomoc:

Kod: Zaznacz cały

  1 #!/bin/sh
  2
  3 rand=$(($RANDOM%3))
  4
  5 case $rand in
  6         0) zmienna="ala";;
  7         1) zmienna="ma";;
  8         2) zmienna="kota";;
  9 esac
 10
 11 echo $zmienna

GNU/Linux user
Na pytania na PW/e-mail nie udzielam odpowiedzi!
Szanujmy innych użytkowników!
Wesprzyj akcje: Temat rozwiązany -> dodajemy [solved]
otokan
Sędziwy Jeż
Sędziwy Jeż
Posty: 65
Rejestracja: 11 gru 2008, 11:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: Bash - Mieszanie zmiennych

Post autor: otokan »

Możesz użyć bashowych tablic

Kod: Zaznacz cały

array=(jeden dwa "trzy i pol")
echo ${array[ $RANDOM % ${#array[@]} ]}
LukAs
Wytworny Kaczor
Wytworny Kaczor
Posty: 284
Rejestracja: 30 paź 2005, 21:56
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: Bash - Mieszanie zmiennych

Post autor: LukAs »

Myślałem o czymś podobnym ostatnio. Dynamiczne menu na podstawie informacji o katalogach w np. dropboksie. Mam u siebie podkatalogi o nazwie: img, screen, video i często przebijam się przez podkatalogi, żeby coś przesłać. Albo dymki z informacjami lub przypomnieniem.
Więcej o mnie znajdziesz na: http://ospulse.pl
kampo
Sędziwy Jeż
Sędziwy Jeż
Posty: 81
Rejestracja: 01 gru 2009, 21:52
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: LXDE
Architektura: x86_64
Kontakt:

Odp: Bash - Losowe wyświetlanie zmiennych

Post autor: kampo »

Obydwa sposoby to duża pomoc,dziękuje :)

Mam jeszcze pytanie.Troche się powtarzaja zmienne i elementy tablicy.Można coś na to zaradzić,żeby się w ogóle nie powtarzały?
Awatar użytkownika
beluosus
Zakręcona Traszka
Zakręcona Traszka
Posty: 695
Rejestracja: 01 paź 2006, 15:32
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Xfce
Architektura: x86
Kontakt:

Odp: Bash - Losowe wyświetlanie zmiennych

Post autor: beluosus »

Coś takiego wymyśliłem:

Kod: Zaznacz cały

#!/bin/bash

a=(raz dwa raz dwa trzy "cztery i pol" raz raz)

echo "BEFORE"
IFS=''
for i in ${a[@]}; do echo = $i; done

b=$(for i in ${a[@]}; do echo $i ; done | sort | uniq)
IFS=$'\n'
echo -e "\nAFTER"
for i in ${b[@]}; do echo = $i; done
Kurs Linuksa: for i in $(ls /bin); do man $i; done
__________________
http://beluosus.pl/
otokan
Sędziwy Jeż
Sędziwy Jeż
Posty: 65
Rejestracja: 11 gru 2008, 11:20
Płeć: Mężczyzna
Wersja Ubuntu: 10.04
Środowisko graficzne: GNOME
Architektura: x86

Odp: Bash - Losowe wyświetlanie zmiennych

Post autor: otokan »

kampo pisze: Mam jeszcze pytanie.Troche się powtarzaja zmienne i elementy tablicy.Można coś na to zaradzić,żeby się w ogóle nie powtarzały?
Do tego to z kolei możesz użyć baszowych hashy (tablic indeksowanych napisami).

Kod: Zaznacz cały

$ a=(raz dwa raz dwa trzy "cztery i pol" raz raz)
$ declare -A hash
$ for e in "${a[@]}"; do hash[$e]=1; done
$ for e in "${!hash[@]}"; do echo "[ $e ]"; done
[ trzy ]
[ raz ]
[ dwa ]
[ cztery i pol ]
$ 
kampo
Sędziwy Jeż
Sędziwy Jeż
Posty: 81
Rejestracja: 01 gru 2009, 21:52
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: LXDE
Architektura: x86_64
Kontakt:

Odp: Bash - Losowe wyświetlanie zmiennych

Post autor: kampo »

otokan:

Też dobre,ale zawsze jest ta sama kolejność (oczywiście miesza).

Dziękuję wszystkim za pomoc.Mam juz "coś",więc na pewno dam rade :)
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

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