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?
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")
Kiitos Metabolix, nyt sain toimimaan ja samalla perusasiat selville.
Aihe on jo aika vanha, joten et voi enää vastata siihen.