Smyčka for v shell skriptu

Marek

Smyčka for v shell skriptu
« kdy: 19. 09. 2011, 10:55:32 »
Potreboval bych poradit s shell scriptem v linuxu - zacinam.

Kód: [Vybrat]
for i in l k j i h g f e d c b a
do
delej neco
done

bych potreboval udelat tak, abych zadal za i="znak" a smycka bezela postupne od tohoto pismene az k pismenu "a"

Jde to nejak jednoduse udelat ?
« Poslední změna: 19. 09. 2011, 13:00:01 od Petr Krčmář »


Marek

Re: Smyčka for v Bashi
« Odpověď #1 kdy: 19. 09. 2011, 12:15:11 »
Myslel jsem to tak, abych nemusel vypisovat celou abecedu a test delaz pro celou abecedu, ale jen od pismene, ktere prislo. A jeste v sestupnem poradi - tj. od z -> a

calvera

Re: Smyčka for v Bashi
« Odpověď #2 kdy: 19. 09. 2011, 12:23:41 »
man seq
man range

Marek

Re: Smyčka for v Bashi
« Odpověď #3 kdy: 19. 09. 2011, 12:47:32 »
podivam se, dik. Jinak mi nekdo predelal nadpis a ma to byt v shell scriptu (#!/bin/sh)

aaa158

  • ***
  • 238
    • Zobrazit profil
    • E-mail
Re: Smyčka for v shell skriptu
« Odpověď #4 kdy: 19. 09. 2011, 13:22:04 »
1. seq naspat nepocita :-(
2. range??? command not found

http://mywiki.wooledge.org/BashFAQ/071

<code>
#!/bin/bash
chr() {
     printf \\$(printf '%03o' $1)
}
ord() {
     printf '%d' "'$1"
}

start=`ord $1`
stop=`ord a`

while [[ $start -ge $stop ]]; do
   echo $start
   abc=`chr $start`
   echo $abc
   # delej neco $start
   # delej neco $abc
   let start=${start}-1
done
</code>

S tym ze pismeno s ktorym sa ma zacat je parameter skriptu, a berie to len male pismena.


deadmail

Re: Smyčka for v shell skriptu
« Odpověď #5 kdy: 19. 09. 2011, 13:43:11 »
1. seq naspat nepocita :-(

ale pocita ;-)

Kód: [Vybrat]
seq 10 -1 1
Abeceda odzadu v Bash-i:
Kód: [Vybrat]
echo {z..a}

Marek

Re: Smyčka for v shell skriptu
« Odpověď #6 kdy: 19. 09. 2011, 13:49:48 »
echo {z..a} vypise jen {z..a}

deadmail

Re: Smyčka for v shell skriptu
« Odpověď #7 kdy: 19. 09. 2011, 13:59:52 »

Marek

Re: Smyčka for v shell skriptu
« Odpověď #8 kdy: 19. 09. 2011, 14:10:14 »
Ale ja to mam delat v "sh" , ne "bash". Podotykam, jsem zacatecnik... v sh mi {z..a} nejde

aaa158

  • ***
  • 238
    • Zobrazit profil
    • E-mail
Re: Smyčka for v shell skriptu
« Odpověď #9 kdy: 19. 09. 2011, 14:30:18 »
1. seq naspat nepocita :-(

ale pocita ;-)

Kód: [Vybrat]
seq 10 -1 1
Abeceda odzadu v Bash-i:
Kód: [Vybrat]
echo {z..a}

Dik, to je ozaj jednoduchsie. Thumbs up :-)

inac bash vs sh...:

Kód: [Vybrat]
$ ls -l `which sh`
lrwxrwxrwx. 1 root root 4  5 sept. 10:51 /bin/sh -> bash

takze asi tak ;-)

Marek

Re: Smyčka for v shell skriptu
« Odpověď #10 kdy: 19. 09. 2011, 14:48:14 »
jo, jenze ja mam /bin/sh soucasti nejakeho busyboxu a ten ma asi jen zakladni moznosti, takze musim pouzivat dřevní prikazy

branchman_

Re: Smyčka for v shell skriptu
« Odpověď #11 kdy: 19. 09. 2011, 17:17:56 »
jo, jenze ja mam /bin/sh soucasti nejakeho busyboxu a ten ma asi jen zakladni moznosti, takze musim pouzivat dřevní prikazy
ord a chr, co ti napisal kolega funguju skoro uplne v pohode aj u mna - treba sa len vyhnut novinkam na styl
Kód: [Vybrat]
$(prikaz)Pristup aaa158 je celkom pekny, staci uz len odstranit bashoviny ako
Kód: [Vybrat]
[[ whatever ]]a
Kód: [Vybrat]
let x=x+1
Ak chces tvorit nieco vlastne, tak odporucam napisat vlastnu funkciu seq, ako tu bola opisovana; tu napises aj na predpotopnom shelli pomerne lahko pomocou while.

Marek

Re: Smyčka for v shell skriptu
« Odpověď #12 kdy: 19. 09. 2011, 17:47:22 »
tak prave ze chr ani org neni podporovana. Je to zarizeni, ktere sice pouziva linux, ale neni tam vse ...

branchman_

Re: Smyčka for v shell skriptu
« Odpověď #13 kdy: 19. 09. 2011, 19:18:48 »
tak prave ze chr ani org neni podporovana
V com moze byt u lubovolneho ucitela nepodporovane spominane
Kód: [Vybrat]
#!/bin/bash
chr() {
     printf \\$(printf '%03o' $1)
}
ord() {
     printf '%d' "'$1"
}