elakdtam a bash szkriptben

Hogyan tudnám megoldani bash szkriptben a következőt?
Egy beépülő fájlt telepítettem fel egy adott útvonalra, mappába.
Innen linkelnem kellene adott helyzettől függően 1,2 vagy 3 helyre.

Ott akadtam el hogy minként menjen tovább a szkript ha ki kell hagynia valamit?

Így kezdtem neki

Van kettő szubrutin.
Az első azt ellenőrzi hogy létezik-e az adott program amelynek szüksége lenne a beépülőre.
A másik hogy létezik-e az a mappa ahová be kell linkelni a beépülőt. Ha nem létezik, akkor létrehozza.

Eddig működik is. Ott akadtam el, hogy ...


Változók beállítása

app_szubrutin
if ! [ -x "/usr/bin/${app}" ]; then (tudom, az else ág az igaz.)

link_szubrutin
if ! [ -d ${link_path} ]; then

program1=/útvonal/
link útvonal
ugrás app_szubrutinra
ugrás link_szubrutinra

program2=/útvonal/
link útvonal
ugrás app_szubrutinra
ugrás link_szubrutinra

program3=/útvonal/
link útvonal
ugrás app_szubrutinra
ugrás link_szubrutinra

... mi van ha a program1 vagy éppen a program2 esetleg mindkettő nincs is feltelepítve?
Hogy léptetem tovább? Vagy csak nyomjam el a hibaüzeneteket a /dev/null-ba?

Hozzászólások

man test, case/essac, if - then - else... Van csillió megoldás, a kérdés, hogy mit szeretnél :-)

Igen ezeket ismerem, de eddig valahogy nem vezettek eredményre.
Így is kezdtem. A szubrutinban máris if then van.
Ha létezik a program akkor linkelés ha nem létezik akkor nincs linkelés, hanem megyünk tovább a másik programra. No itt akadtam el
És ugyanezt lejátsszuk még egyszer. Ezért vannak a szubrutinok.

De lehet hogy eleve rosszul építettem fel az egészet. Persze ha kiREMelem ami nekem nincs, akkor frankó.

Nagyon konkrétan a kedvenc disztróm repójában nincs benne a kedvenc böngészőim egyike sem. Ezt megoldottam.
Viszont a böngészőkben lévő ffmpeg plugin hagy némi kívánni valót maga után. Ezért azt egy külső tárolóból szedem le és mindig be kell linkelni az adott böngészőnek a megfelelő helyre.

Nos ezt nem szeretném mindig kézzel elvégezni. Elvégre erre való a szkript és a cron.

Íme:

Ezek a változók

if [ "$(uname -i)" = "x86_64" ]; then
libpath="lib64"
else
libpath="lib"
fi

source_path="/usr/${libpath}/browser-plugins"
filename=$(ls ${source_path})
name="libffmpeg.so"

szubrutin 1 - innen nem tudok tovább menni.

check_app () {
if ! [ -x "/usr/bin/${browser}" ]; then
echo -e "A program nem található \n"
else echo "A program létezik"
fi
}

szubrutin 2

check_folder () {
if ! [ -d ${link_path} ]; then
echo -e "A mappa nem létezik, ezért létrehozom. \n" && mkdir ${link_path} >/dev/null 2>&1
if ! [ -d ${link_path} ]; then
echo -e "A mappát nem sikerült létrehozni! Ellenőrizd az útvonalat, és jogosultságokat. \n"
echo -e "Ezt az útvonalat és mappát adtad meg: ${link_path} \n \r"
exit
fi
fi
}

Hú erről el is feledkeztem: szubrutin 3

make_link () {
ln -fs ${source_path}/${filename} ${link_path}/${name}
}

És itt a vége:

browser="opera"
link_path="/usr/${libpath}/${browser}/lib_extra"
check_app
check_folder
make_link

browser="opera-developer"
link_path="/usr/${libpath}/${browser}/lib_extra"
check_app
check_folder
make_link

browser="vivaldi-snapshot"
link_path="/opt/vivaldi-snapshot"
make_link

Váááóóó... most hogy írtam, megláttam a fényt az alagút végén.
Így talán jobb lesz.

A változók, meg a check_folder szubrutin marad, és így jön a vége. Így talán nincs benne hiba.


check_browser () {
if [ -x "/usr/bin/${browser_name}" ]; then
if [ ${browser_name} = ${browser_name} ]; then
link_path="${link_path}"
fi
check_folder
ln -fs ${source_path}/${filename} ${link_path}/${name}
fi
}

browser_name="opera"
link_path="/usr/${libpath}/${browser_name}/lib_extra"
check_browser

browser_name="opera-developer"
link_path="/usr/${libpath}/${browser_name}/lib_extra"
check_browser

browser_name="vivaldi"
link_path="/opt/${browser_name}"
check_browser

browser_name="vivaldi-snapshot"
link_path="/opt/${browser_name}"
check_browser