Hirdetés

Új hozzászólás Aktív témák

  • samujózsi

    senior tag

    válasz dqdb #13667 üzenetére

    Na, azt hiszem, megvan a dolog lényegi része:
    a make a target után indentálva írt sorokat a default vagy a beállított shellnek adja át.
    De nem az egész blokkot egyben, hanem minden egyes sort külön shellben futtatva.
    Ezért kap hülyét attól, hogy egy shell scriptben normálisan működő if-then-else szerkezetet próbálnék végrehajtatni vele, illetve ugyanez az oka, hogy ha az egyik sorban bekérek a read paranccsal egy választ, akkor a válasz tárolására használt változó tartalmát már nem érem el később.
    Ha a fent bemutatott kódrészlet sorait ; \ karakterekkel zárom, akkor működik:

    test:
            read -p "Are you sure? (YES/no) " answ ; \
            if [ $${answ} = "YES" ]; \
            then \
                    echo "OK" ; \
            else \
                    echo "Abort" ; \
                    exit ; \
            fi

    Ez már azt csinálja, amit akartam. Csak kicsit soká tartott, mire ezt felfogtam. :(
    Mentségemre szolgál, hogy a make-et kb. akkor használtam utoljára, mikor még muszáj volt rendszeresen új kernelt fordítani... :) (nem tegnap volt, na...)

Új hozzászólás Aktív témák