Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: Marek 19. 09. 2011, 10:55:32

Název: Smyčka for v shell skriptu
Přispěvatel: Marek 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 ?
Název: Re: Smyčka for v Bashi
Přispěvatel: Marek 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
Název: Re: Smyčka for v Bashi
Přispěvatel: calvera 19. 09. 2011, 12:23:41
man seq
man range
Název: Re: Smyčka for v Bashi
Přispěvatel: Marek 19. 09. 2011, 12:47:32
podivam se, dik. Jinak mi nekdo predelal nadpis a ma to byt v shell scriptu (#!/bin/sh)
Název: Re: Smyčka for v shell skriptu
Přispěvatel: aaa158 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.
Název: Re: Smyčka for v shell skriptu
Přispěvatel: deadmail 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}
Název: Re: Smyčka for v shell skriptu
Přispěvatel: Marek 19. 09. 2011, 13:49:48
echo {z..a} vypise jen {z..a}
Název: Re: Smyčka for v shell skriptu
Přispěvatel: deadmail 19. 09. 2011, 13:59:52
echo {z..a} vypise jen {z..a}
Bash v3 (http://tldp.org/LDP/abs/html/bashver3.html)
Název: Re: Smyčka for v shell skriptu
Přispěvatel: Marek 19. 09. 2011, 14:10:14
Ale ja to mam delat v "sh" , ne "bash". Podotykam, jsem zacatecnik... v sh mi {z..a} nejde
Název: Re: Smyčka for v shell skriptu
Přispěvatel: aaa158 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 ;-)
Název: Re: Smyčka for v shell skriptu
Přispěvatel: Marek 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
Název: Re: Smyčka for v shell skriptu
Přispěvatel: branchman_ 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.
Název: Re: Smyčka for v shell skriptu
Přispěvatel: Marek 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 ...
Název: Re: Smyčka for v shell skriptu
Přispěvatel: branchman_ 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"
}