mappa létezésének vizsgálata case segítségével

Mappák létezését vizsgálnám. Sima ügy:


if [ -d "${folder}" ]; then 
blabla
fi
<>

No de a mappákban fájlok találhatók, melyekkel kezdeni szeretnék valamit.
Ha a mappa létezik, kérdezd le a benne lévő N fájl verziószámát. Igen ám de a verziószámokat különbözőképpen lehet lekérdezni.
Ezért az else ág sem elég. Teszem azt 5 könyvtárról, és 5 fájlról beszélünk.
Gondoltam a case szerkezetre, de így nem működik:


if [ -d "${folder}" ]; then 
   case "${name}" in
       file1)
          installed_version=$(${oname} --version)
          blabla
          csináld az A-t  
          ;;
       file2)
          installed_version=$(${oname} --version | awk -vFS=' ' '{print $2}')
          blabla
          csináld az A-t
          ;;
        file3)
          installed_version=$(${name} --version | awk '{print $3}')
          blabla
          csináld a B-t
          ;;
    esac
fi

Miért nem tartja meg a formázást?

Hozzászólások

Az a < > /code meg kicsit rossz helyen van, ha van jogod, javítani kellene.

A feladatot nem lehetne kicsit konkretizálni?

Miből döntöd el, hogy hogyan kell lekérdezni azt a verziót? A névből?
Mit jelent a "nem működik"? Hibaüzenet? Csak nem csinálja amit vártál? Egyéb?
Hogy az egyik helyen name, a másikon oname van, az szándékos vagy elírás?

A name oname nem elírás. Bár lehetne a name is oname. Odáig még nem jutottam. A name értékeket vesz fel, az oname az original name. Mindegyiknek funkciója van. Változó útvonalak, mappák nevek, státuszok.

Amit szeretnék.

1, Fájlnevek megadása. Ha létezik, akkor van egy mappanév is.
2, Ezt a mappát ellenőrzöm. Ha a mappa létezik, akkor lekérem a verziószámot. Azért ekkor mert ez frissítés.
3, ha nincs mappa akkor az telepítés, de azt csak kapcsolóval lehet.
3, a verziószám ismeretében végzek feldolgozást.

De azt vettem észre, hogy nem veszi figyelembe a könyvtár ellenőrzést. Simán végigfut mindenen.

Eleddig 4 fájlt, illetve mappát ellenőriztem, if then else-vel, és szépen működött.
De az 5. fájl esetében már kevés.
Még az elif szóba jöhet. De a case elegánsabb. S oda több dolgot is felvehetnék.

Erre azért van szükségem, mert a szoftvertárolóban az érintett csomagok nem elérhetőek. És még az így letöltött és feltelepített dolgokat is ki kell egészítenem. külső softlink-kel. Kicsit bonyi.

En mennek a biztosra - if, else, elif vonal
Szerintem az 'elif' a baratod.

Igaz s így frankón működik is. De hülye voltam, mert rákérdezek a mappa létezésére, a case-ban meg megadom neki konkrétan hogy mi a neve. Persze hogy lefut. :(

Más...
Ennek van egyszerűbb módja?

if [ "$(uname -i)" = "x86_64" ]; then
arch="x86_64"
else
arch="i386"
fi

Programok forráskódjainak megjelenítésére <code>Kód</code>
Ennek ellenére mégsem formázva látom viszont az előnézetben. Vagy nem ez kell?


if cd "$folder" 2>/dev/null; then
  while read; do
    [ -f "$REPLY" ] || continue
    case "$REPLY" in
      ...blabla...
    esac
  done < <(ls -1)
  cd ..
fi

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE