-
Fototrend
Új hozzászólás Aktív témák
-
Jester01
veterán
1. mi nem jó? Nekem szépen kilép az összes egymásbaágyazott shellbõl. Amúgy meg természetesen magadnak is ellenõrizheted a subshell visszatérési értékét ($?)
2. már írtam, hogy nem a ciklussal van a baj. Példa:
global=0
for((i=0;i<10;i++))
do
echo -n ''$i ''
global=$i
done
echo ''global=$global''
$ ./t.sh
0 1 2 3 4 5 6 7 8 9 global=9
CSAK akkor nem jó, ha valami oknál fogva másik shellben fut. -
Jester01
veterán
Vegyük észre, hogy itt a jó öreg subshell problémával állunk szemben.
A ctrl+c múködését pedig (bunkó módon) egy kill -INT $$ utasítással lehet szimulálni
MOD: ez sem jó, mert a $$ nem az aktuális shell pidje
Tyrael: A break-nek lehet megmondani, hány szintet ugorjon.
[Szerkesztve] -
Tyrael
senior tag
nemtom konkretan melyik programnyelvrol beszelunk(mar latom, hogy unix shell script), nem is vagyok programozo, de:
php-ban ugy mukodik, hogy fuggveny futasa kozben definialt valtozok nem lesznek globalisak.
szal ha definialod talal-t 0-ra, majd meghivsz egy sajat function-t, ott csinalsz valamit, es talal-t atallitod 0-ra, akkor miutan viszatersz a fuggvenyhivas helyere talal meg mindig 0 lesz, mert te a fuggvenyen beluli talal valtozot valtoztattad meg.
hogy jol mukodjon, a function-on belul szukseg van a
global $talal;
sorra, utana mar nyugodtan valtoztathatod a $global erteket, es globalisan is valtozni fog.
sorry, ha nagy hulyeseget irtam, de lehet hogy nalad is valami ilyesmi a baj, nezz utana az adott programnyelv leirasaban a valtozok hataskore hogy van megszabva.
Tyrael
[Szerkesztve] -
Tyrael
senior tag
exit-nek nem lehet megadni, hogy hany szintet lepjen vissza?
mintha olvastam volna valami ilyesmi lehetoseget
illetve be lehetne vezetni egy talal valtozot is.
te esetedben mikor kiirja alma-t, akkor beallitja a talal valtozot mondjuk 1-re, es mikor kiirna a mogyorot, akkor megvizsgalod, hogy talalnak mi az erteke, es ha 1, akkor nem lep bele.
vagy ilyesmi
Tyrael -
QuarK
senior tag
-
OddMan
őstag
Linux scriptek írásának megtanulásához egy jó magyar nyelvű könyv: Bővebben: link
-
emitter
őstag
ha tudsz angolul:
Bővebben: link
Bővebben: link
egyébként gugli 1-2 találata a ''unix script sed''-re -
corm
senior tag
n =`expr $1 - 19 \* $1 / 19` , de nem teljese értem, hogy ez miért van így. Szerintem elnéztél valamit, mert ez így nagyon 0-t fog visszaadni
Esetleg ha ez vmi maradékképzés akar lenni, akkor arra ottvan a %, a maradékos osztás
hazsnálata: pl. p=6 % 4 és ez 2-t fog visszadni
[Szerkesztve] -
corm
senior tag
./unix1: line 2: `n ='expr $1 - 19*($1/19),'
Van benne néhány
először is: az expr -nek úgy kell megadni hogy az operandusok és az opertáor közt kell hagyni szünetet
aztán szerintem a ()-t nem kezeli le, szóval ezzel is baja lehet(ebben nem vagyok biztos nem próbáltam), csinálhatod ehelyett azt, hogy a $1 / 19-et beteszed egy segéd változóba, vagy ami logikusabb, mivel a szorzás kommutatív: $1 / 19 \* $19 - bár ennek így megnézve semmi ételme, nyílván $1et kapsz vissza...
aztán hiba még, hogy a *-ot nem tudod így használni, le kell védened egy \-el s mindig amikor szorzást akarsz írni ezt irod: \*
aztán végül nemtom miaz a , a legvégén, szerintem az nem kell oda
ui. jól állhatsz, ha egy sorban ennyi hibád van- de azért csak kérdezz nyugodtan, ha tudok segítek
-
corm
senior tag
ez annyit tesz, hogy ha az elsőként megadott paraméter nem -p, akkor fog belemenni az elágazásba. Meglehjetősen gyanús ez a sor nekem.
egy Elte-n feladott unix beadandó feladathoz hasonlít... Ha így van, és tényleg oda kell, akkor spec itt azt jelentia -p, hogy pünkösdöt kell-e kiszámolni. Tehát akkor fog belemenni az elágazásba, ha húsvétot kell.
-
corm
senior tag
Huh, ha jól emléxek akkor úgy lehet leggyorsabban megállapítani, hogy valami prímszám-e , hogy elkezded egyesével nézni a számokat egy ciklusban, ahol a ciklusváltozó lehet maga a szám amivel osztod a keresett számot. egészen gyök n-ig kell ezt csinálni (n az amiről megakarod álalpítani). és ha valamelyikkel osztható, akkor ugye nem prím-> vége a ciklusnak. Ha peig a ciklus végig fut, és az utolsó elem sem osztója n-nek, akkor prímet adtál meg.
unixban lekódolni pedig nem nehéz, itt egy példa(azért unixban énis kezdő vok, nem szidni a kódért)
a=$1
i=2
l=0 -- egy logikai változó, ami azt mondja, meg hogy osztója-e vagy sem
gyoka=(gyök a - nem tudom a gyök parancsot... )
while [ i -le gyoka ]
do
if [ `expr a % i` -eq 0 ]
then
l=1
fi
i=`expr i+1`
done
if [ l -eq 1 ]
then
echo ''Prím!''
else
echo ''Nem prím!''
fi
Na kb ennyi, de gondolom az okosabbak találnak majd benne ezer hibát
Új hozzászólás Aktív témák
● olvasd el a téma összefoglalót!
- X1 Carbon 9th 14" FHD+ IPS érintő i7-1185G7 16GB 512GB NVMe magyar vbill ujjlolv IR kam gar
- GARANCIÁLIS! Samsung 980 PRO 1TB M.2 Gen4 SSD!
- FÓLIÁS! LG UltraFine 32UN88A-W Ergo IPS Monitor! 3840x2160
- Intel Core i7-14700K processzor eladó!
- Asztali PC , i7 10700 , RTX 3070 Ti , 32GB DDR4 , 512GB NVME , 1TB HDD
- 24" Eizo FlexScan EV2146W, 1920X1200 szép, hibátlan nélkül
- Telefon felvásárlás! Samsung Galaxy A15, Samsung Galaxy A25, Samsung Galaxy A35, Samsung Galaxy A55
- Xiaomi Redmi Note 13 Pro 5G 256GB, Kártyafüggetlen, 1 Év Garanciával
- 134 - Lenovo Legion Pro 7 (16IRX8H) - Intel Core i9-13900HX, RTX 4090
- 127 - Lenovo Legion Pro 7 (16IRX9H) - Intel Core i9-14900HX, RTX 4080 (ELKELT)
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest