Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Bash: Shelliskripti ja välillinen hakemisto

Krisse7 [07.10.2006 16:44:08]

#

Teinpähän linuxissa shelliskriptin, jotakuinkin tähän tyyliin:

kansio=/joku/kansio
ln -s ${kansio}/foo/* /jokutoinen/foo/

No, tämähän toimii mainiosti. Ongelmat alkavat, kun kansioksi asettaa sellaisen hakemiston, jossa on välilyönti, esim. "/program files/jee". ln -komento ei kuitenkaan koskaan saa tuosta kansio-muuttujasta muuta kuin alkupään ensimmäiseen välilyöntiin asti. Olen yrittänyt kaikenlaista, yritin laittaa tietysti hipsut ympärille tyyliin

ln -s "${kansio}/foo/*" /jokutoinen/foo/

, vaan tuostapa ei ln-komento tykännyt, ja teki yhden tiedoston nimeltä *, vaikka piti linkata monta tiedostoa.
Komentoriviltä toimii tuo linkkaus komennolla

ln -s /program\ files/jee/foo/* /jokutoinen/foo

, joten yritin myös kenoviivoitella välilyöntiä tuossa kansio-muuttujassa, vaan eipähän sekään toiminut.
Mitä olen jättänyt huomioimatta/missä vika/miten asian saa korjattua?

Meitsi [07.10.2006 19:15:51]

#

Bashin tabcomplete kertoo että laittamalla

\

-merkin välilyönnin eteen, homma pelittää.

Esim:

ls .wine/drive_c/Program\ Files/mozilla.org/

Krisse7 [07.10.2006 19:40:42]

#

Niin, siis suoraan komentoriville kirjoittamalla tuo \<välilyönti> -juttu toimii, vaan jos kierrättää muuttujan kautta, niin ei. Jos siis laitan

kansio="/program\ files/jee"

, ei homma pelitä. Muuttujasta käytetään vain osuus välilyöntiin asti, kenoviiva mukaanlukien, vaan ei enempää.

bash-3.1$ kansio="/program\ files/jee"
bash-3.1$ echo $kansio
/program\ files/jee
bash-3.1$ cd $kansio
bash: cd: /program\: No such file or directory
bash-3.1$ cd /program\ files/jee
bash: cd: /program files/jee: No such file or directory
bash-3.1$

Blaze [07.10.2006 21:04:52]

#

Tuon lainausmerkin paikkaa voi siirtää:

ln -s "${kansio}/foo"/* /jokutoinen/foo/

Krisse7 [07.10.2006 21:16:06]

#

Aivan, kas kun en tullut ajatelleeksi. Kiitoksia :)

A-P [10.10.2006 09:21:07]

#

Krisse7 kirjoitti:

kansio="/program\ files/jee"

Hakemiston nimen kirjoittaminen lainausmerkkeihin ja merkin kirjoittaminen kenonviivan avulla ovat tässä tapauksessa toisensa poissulkevia.

Vastaus

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

Tietoa sivustosta