Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Bash: shell script + sed + erikoismerkin vaihtaminen

Ariel [20.06.2012 11:55:05]

#

Moi!

Haen shell scriptissäni tietokannasta käyttäjätietoja. Ongelmaksi muodostuvat merkit: ` ja *

oikeudet=`mysql -u root -e "SHOW GRANTS FOR $data"`
echo $oikeudet

Miten saisin muutettua ` --> '

Kokeilin tätä, mutta `-merkki on erikoismerkki, enkä tiedä, kuinka sed:llä voin korvata sen:

oikeudet=`mysql -u root -e "SHOW GRANTS FOR $data"` | sed "s/`/'/"

Entä kuinka estetään se, ettei shell scriptini kokeile suorittaa sitä, minkä tulostan?

Metabolix [20.06.2012 14:58:42]

#

Nyt ovat perusasiat hukassa. `-merkkien sisällä on suoritettava komento, ja jos haluat sedillä muokata kyseisen komennon tulostetta, myös sedin pitää olla samassa välissä. Nyt yrität muokata sedillä sijoituslausekkeen (muuttuja=arvo) tulostetta, mutta kyseinen lauseke ei tietenkään tulosta mitään.

`-merkin ilman erikoismerkitystä voi kirjoittaa ainakin kolmella tavalla: \`, "\`" ja '`'.

`komento`-rakenteen sijaan voi käyttää rakennetta $(komento), joka on helppo hahmottaa myös silloin, kun komentoja on monta sisäkkäin.

Rivin voisi kirjoittaa siis näin:

oikeudet=$(mysql -u root -e "SHOW GRANTS FOR $data" | sed "s/\`/'/g")

Ariel [25.06.2012 15:51:15]

#

Kiitos Metabolix, nyt sain toimimaan ja samalla perusasiat selville.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta