for i in <paarisridade sisu>; do ...

Linuxi tarkvaraliste küsimustega seotud foorum

Moderaator: Moderaatorid

Vasta
Kasutaja avatar
v6lur
Vana Pingviin
Vana Pingviin
Postitusi: 667
Liitunud: 08.07.2005, 03:00

for i in <paarisridade sisu>; do ...

Postitus Postitas v6lur »

Käsk

Kood: Vali kõik

dcop amarok collection query "SELECT ALL t.title, t.artist FROM tags t WHERE t.title like '%$search%' ORDER BY t.title"
otsib Amaroki muusikakogust lugude pealkirjadest mustrit $search ning väljastab sellise jada:

Kood: Vali kõik

Otsingutulemusele vastav lugu nr 1
101
Lugu nr 2
874
Lugu 3
278
...
Lugu n
1667
Ehk siis esitajate nimede asemel on nende numbrilised ID-d. Need ID-d saab (ükshaaval) nimedeks käsuga

Kood: Vali kõik

dcop amarok collection query "SELECT DISTINCT t.name FROM artist t WHERE t.id like '<ID>'"
Siit küsimus: kuidas saab esimese käsu väljundis esitajate ID-d asendada nende nimedega (nii, et lugude pealkirjad jääks puutumata)? Kas "for i in list; do ..." saab rakendada ainult paarisnumbrilistele ridadele?

Või veel parem, kuidas saaks väljundi vormistada kujul

Kood: Vali kõik

Otsingutulemusele vastav lugu nr 1 (Esitaja 1)
Lugu nr 2 (Esitaja 2)
Lugu 3 (Esitaja 3)
...
Lugu n (Esitaja n)
?
"Sleep, she is for the weak."
priit
Vana Pingviin
Vana Pingviin
Postitusi: 521
Liitunud: 04.08.2005, 03:00

Postitus Postitas priit »

Kood: Vali kõik

SELECT tags.title, artist.name FROM tags INNER JOIN artist ON tags.artist = artist.id WHERE tags.title LIKE '%$search%' ORDER BY tags.title;
Edit: nagu vist sul vaja
Selline bash skript

Kood: Vali kõik

#!/bin/bash
IFS='
'
array=(`dcop amarok collection query "select tags.title, artist.name from tags inner join artist on tags.artist = artist.id where tags.title like '%$1%' order by tags.title;"`)
len=${#array[*]}
i=0
while [ $i -lt $len ]; do
    echo -n ${array[$i]}
    echo -n " ("
    echo -n ${array[$i+1]}
    echo ")"
    let i=i+2
done
väljastab peale käsku

Kood: Vali kõik

sh test.sh Walk
minu arvutis sellised read:

Kood: Vali kõik

Walking Spanish (Tom Waits)
You'll Never Walk Alone (Johnny Cash)
Kasutaja avatar
v6lur
Vana Pingviin
Vana Pingviin
Postitusi: 667
Liitunud: 08.07.2005, 03:00

Postitus Postitas v6lur »

Suur aitäh! :)
"Sleep, she is for the weak."
Vasta