Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: vikitus - 12.03.13 - klo:11.16

Otsikko: Kaivataan ongelmaan shell-ratkaisu [RATKAISTU]
Kirjoitti: vikitus - 12.03.13 - klo:11.16
Halutaan:
1. Tutkia nykyisen sijainnin alahakemistot
2. Mikäli alahakemisto sisältää pom.xml-tiedoston niin käännetään.

Purkasin tämän kahteen osaan, joista molemmat toimivia, mutta nyt ongelma kuinka saada ne yhdistettyä.

kohta 1.
Koodia: [Valitse]
find . -maxdepth 1 -type d -exec echo {} \;
kohta 2.
Koodia: [Valitse]
(cd $subdir_which_may_contain_pom && if [ -f 'pom.xml' ]; then mvn clean install; fi)
Eli tuo ykköskohdan tuloste pitäisi jollain tavalla saada muuttujaan subdir_which_may_contain_pom.
Onko tässä edes mahdollista välittää muuttujia? Onko tämä järkevä lähestymistapa?
Otsikko: Vs: Kaivataan ongelmaan shell-ratkaisu
Kirjoitti: SuperOscar - 12.03.13 - klo:11.58
Jollet alaspäinyhteensopivuudesta piittaa, Bashkin tukee nykyään Zsh-tyylistä jokerimerkkirekursiota:

Koodia: [Valitse]
for f in **/pom.xml; do
    # tee mitä ikinä haluatkin pom.xml-tiedostolle
done

Mutta jos sinun täytyy todella mennä kyseiseen alikansioon, joudut pätkimään $f-muuttujaa:

Koodia: [Valitse]
for f in **/pom.xml; do
    echo ${f%/pom.xml}
done

(Tulostaa kaikki niiden kansioiden nimet, joista löytyy pom.xml.)

Sama findilla ilman **-rekursiota:

Koodia: [Valitse]
for f in $( find . -name pom.xml ); do
    echo ${f%/pom.xml}
done
Otsikko: Vs: Kaivataan ongelmaan shell-ratkaisu
Kirjoitti: _Pete_ - 12.03.13 - klo:13.14
Halutaan:
1. Tutkia nykyisen sijainnin alahakemistot
2. Mikäli alahakemisto sisältää pom.xml-tiedoston niin käännetään.

Purkasin tämän kahteen osaan, joista molemmat toimivia, mutta nyt ongelma kuinka saada ne yhdistettyä.

kohta 1.
Koodia: [Valitse]
find . -maxdepth 1 -type d -exec echo {} \;
kohta 2.
Koodia: [Valitse]
(cd $subdir_which_may_contain_pom && if [ -f 'pom.xml' ]; then mvn clean install; fi)
Eli tuo ykköskohdan tuloste pitäisi jollain tavalla saada muuttujaan subdir_which_may_contain_pom.
Onko tässä edes mahdollista välittää muuttujia? Onko tämä järkevä lähestymistapa?

Tämän pystyy tekemään suoraan maven:llakin. Katso dokumentaatiota "modules" kohdasta.
Otsikko: Vs: Kaivataan ongelmaan shell-ratkaisu
Kirjoitti: vikitus - 12.03.13 - klo:14.05

Tämän pystyy tekemään suoraan maven:llakin. Katso dokumentaatiota "modules" kohdasta.


Kyseisessä tapauksessa maven-moduuleilla ei ole keskinäisiä riippuvuussuhteita toisiinsa.
Otsikko: Vs: Kaivataan ongelmaan shell-ratkaisu
Kirjoitti: vikitus - 12.03.13 - klo:14.08
Kiitos SuperOscar!

En tiennyt noista asterikseista. Päädyin sinun ja kaverin avustamana seuraavaan...

Koodia: [Valitse]
for a in `ls -1tr **/pom.xml`;do b=`dirname $a`; (cd $b; mvn install;) done