Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 6 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2006-11-29-12:41 #2053379
Próbáld így: „‘”$provider”‘”
Az idézőjelek szóközökkel, mert félreérthető a fenti: ” ‘ „$provider” ‘ „Teszt: echo „a=1” |awk ‘{print „‘”$a”‘”}’
eredmény: 1ELaci
2006-11-29-12:46 #2053380${$provider} ?
2006-11-29-13:19 #2053381Tehát ha jól értem, akkor a $változó változóban lévő szöveget akarod, mint parancsot kiadni. Ha igen, akkor próbáld eval $változó módon!
2006-11-29-13:28 #2053382Kösz a segítséget. így oldottam meg:
Az adatbázis „query” mezőjében ez van:
select count(*) from products where provider={replaceme} and avail=’0′;
A script pedig:
Code:for provider in ${providers[@]}; do
query_=${query/”{replaceme}”/”$provider”}
val=`echo $query_ | mysql -N stats`
echo „$provider, $val”
doneEz azért is jobb (az én szempontomból), mert a {replaceme} sablont masként is fel tudom használni és az adatbázis kitöltésekor, nem kell tudni a scriptben lévő változó nevét.
Kösz,
vazi
2006-11-30-19:13 #2053383Sziasztok!
Olyat lehet hogy egy parancsot akarok várakoztatni 1 óra hosszat, és csak mikor letelt akkor végrehajtani?
Pl:
Echo „indul az óra!”
Ide jönne a parancs
Echo „Letelt az időd!”Persze nem ez a végső script 😀 csak hogy érthető legyen mit akarok.
2006-11-30-19:15 #2053384Echo „indul az óra!”
sleep aztidopasodpercben
Echo „Letelt az időd!”2006-12-02-22:53 #2053385Köszönöm!
2006-12-05-20:13 #2053386Van itt egy saját barkácsolású script, elvileg egy tracklistnek megfelelően nevezne át csak track01-xx-ként jelzett számokat. A kérdés, hogy mivel tudnám azt a csúnya nagy zárójelet az első pipe után kiváltani? (azért van rá szükség mert a pipe külön processként megy és a létrehozott name tömb nem exportálható)
Code:#!/bin/bash
track=0;
i=0;
mkdir result 2>/dev/null
cat oceanborn.tag|(while read
do
i=$(($i+1))
name[$i]=$REPLY
echo ${name[i]}
donefor fn in *
do
if [[ `echo „$fn” | grep „.flac”` != „” ]]
then
track=$(($track+1))
echo „$fn”
echo „$track – ${name[$track]}.flac”
mv „$fn” „result/$track – ${name[$track]}.flac”
fi
done)A másik dolog, hogy tudok úgy számozni, hogy vezető 0-k is legyenek benne? Van erre valami trükk, vagy csak a favágó módszer?
Előre is köszönöm.2006-12-05-21:01 #2053387„A kérdés, hogy mivel tudnám azt a csúnya nagy zárójelet az első pipe után kiváltani? (azért van rá szükség mert a pipe külön processként megy és a létrehozott name tömb nem exportálható)”
LIST=`cat …`„A másik dolog, hogy tudok úgy számozni, hogy vezető 0-k is legyenek benne? Van erre valami trükk, vagy csak a favágó módszer?”
A „favágó módszer” tökéletes… főként, ha valami behatárolt karaktersorról van szó pl. 1-5-ig.
De, ha 00XYZ, ahol XYZ=0…9…F, akkor arra ott a printf.2006-12-05-21:21 #2053388„A másik dolog, hogy tudok úgy számozni, hogy vezető 0-k is legyenek benne? Van erre valami trükk, vagy csak a favágó módszer?”
Tökéletes a favágás, de az annyira nem elegáns, hogy még kettőre se szabad megírni 🙂Szóval, printf nélkül: megnézed, hogy kisebb-e, mint 10.
Code:if [ $track -ge 10 ]; then
TrackNr=$track
else
TrackNr=0+$track
fiHa 2 nullát akarsz, akkor legelőször még egy nagyobb-e, mint száz, majd elif nagyobb-e, mint 10, stb.
Amúgy nem lehetne ezt a szkriptet egyszerűbben megoldani? Igaz, most nincs kedvem filózni rajta, de szerintem igen…
[red]Szerk[/red].: akarva akaratlan, csak filózok rajta. Szóval lényegében azt csinálod, hogy az összes flac kiterjesztésű fájlon végiglibbensz ABC-szerint, és sorrendben adod egy más fáljban tárolt neveket. Van egy progi, amelyet úgy hívnak, hogy paste.
Pont ezt csinálja (tehát az egyik fájl n. sora mellé kiírja a másik fájl n. sorát). -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz