hazi feladat (help)

Fórumok

először is szeretnék elnézést kérni..

egyhogy külön topicot nyitottam, azért mert nem olvastam el a többi topicot.
Sajnos nincs rá sok időm. Szeretném leszögezni, hogy nagyon-nagyon kezdő vagyok, és elkélne egy kis help.
A félév kezdete óta 5 gyakorlati óránk volt bevprogból, tudni kell, hogy alapvető linuxparancsokkal kezdtünk, szal aki valami egyszerűbb szuperscriptet akar rámtukmálni, az lehetőleg ne tegye, mert nem fogom érteni. Ja igen, és tudom, hogy elavult :)

ez lenne a feladat:

Írj UNIX parancsfájlt potlas néven, ami kiírja egymás alá az első két paraméterét, úgy hogy a rövidebbet annyi * karakterrel pótolja ki, amennyivel a másik szöveg hosszabb. Az mindegy, hogy melyik paramétert írja ki előbb. Példa futtatások:
./potlas dio citrom
dio***
citrom

./potlas "dio narancs" citrom
dio narancs
citrom*****

ennyit sikerült csinalnom eddig (nem röhögni :)

http://web.axelero.hu/lalika14/gecc.jpg

Valaki mondja már el, hogy hol szar. Mindenhol vagy csak egy-két helyen?

köszi előre is

Hozzászólások

Ezt most hogy próbáltad?

Egyáltalán, kipróbáltál belőle akár 1 sort is, hogy működik-e???

1. értékadásnál nincs space a = körül
2. mi az a x = -n ??? talán inkább x=`echo $1 | wc -c`
3. a $x visszaadja az x értékét; tehát $3=z-nek nincs értelme! Használj tetsz. változó nevet - pl. a=`expr $y '-' $x`

Ez itt sajna tobb sebtol verzik...

2-4 sor: ez itt garantaltan hibas. Mit is szeretnel csinalni a parametereiddel? :)

6-7: szintaktikai es logikai hibak. Szvsz a parameterek megletet kulon kellene ellenorizni es pl szolni a usernek hogy neked min 2 db -ra van szukseged. a -n az a test(1) vagy [(1) parametere, csak [ ] blokkban mukodik. a test program mukodeserol es parametereirol
man test ad bovebb es reszletes informaciot. A wc egy kulso program, ugyanugy mint az expr. Ugyanugy is kell hivni ;). Valamint a wc a paremtereit filekent kezeli es megprobal beloluk olvasni.

9-10: A $ valtozok a parancssori parameterek valtozoi ne tessek hasznalni oket. A $valtozo=ertek kifejezes hibas. A masodik parameter-tnem kell ' koze tenni.

if sorok: man test, az osszes hibas.
Sajna en nem ismerek mas modot, nx* kiiratasara, minthogy egy ciklusban (pl while) a hosszok kulonbsegenek mennyiseguszor vagy kiiratod az egy drab csillagot echo -n -el, vagy osszefuzod egy stringbe es a vegen azt iratod ki.

Amit tanacsos elolvasni: man test es a man bash-t.

talan bejartal volna progkorre meg gyakra
akkor nem itt szivnal

Maga a program itt van, csak azt nem tudtam megoldani, hogy egy sorba irja ki a csillagokat, de ezt majd a tolem okosabbak megmondjak hogyan kell. ;)


#!/bin/bash

hossz1=`echo $1 | wc -c`
hossz2=`echo $2 | wc -c`

if [ $hossz1 -lt $hossz2 ]
then
  s=`expr $hossz2 - $hossz1`
  echo $1
  while [ $s -gt 0 ]
  do
    echo '*'
    s=`expr $s - 1`
  done
  echo $2
elif [ $hossz1 -gt $hossz2 ]
  then
  s=`expr $hossz1 - $hossz2`
  echo $1
  echo $2
  while [ $s -gt 0 ]
  do
    echo '*'
    s=`expr $s - 1`
  done
else
  echo $1
  echo $2
fi

Jólvan. De nekem nem segített senki, amikor én kértem itt házifeladat segítséget, sőt csak egy nagy letolást kaptam. Ami nem esett jól, sőt kifejezetten rosszul esett ( http://hup.hu/node/19717 ). Szerintem ő is szívesebben foglalkozik így a témával, mintha annyi a válaszunk, hogy ott a google, vagy miért nem jártál órára, előbb kellett volna gondolkodni bla bla

Bejárok gyakorlatra, meg előadásokra is. 5 volt belőle, szerinted azalatt meddig jutottunk el? Arról nem is szólva, hogy gyakorlaton egy halál egyszerű példától eltekintve, semmit nem tanítanak. Plussz estire járok. Munka mellett nehéz. Azt mar nem is mondom, hogy semmi linuxos/programozó múltam sincs, szal csak óvatosan ezekkel "be kellett volna járni az órákra" a kijelentésekkel, ha egy mód van rá.

Amúgy aki pontosan tudja, hogy hogyan kell, az nagyjaból le is írhatná, hogy mi micsoda pontosan. Úgy talán tanulnék is belőle. előre is kösz

egy társad ugyanezt a házifeladatot kérte tőlem bent melóhelyen, hogy csináljam meg neki.
Ha kell, keress meg magánban ismi@freemail.hu és elküldöm a scriptet Volt még egy, amit szintén be kell majd adni, az arról szól hogy egy könyvtárban vannak szöveges fájlok és azok tartalmát kellett egy közös fájlba íratni. Az alkönyvtárakra ne adjon hibaüzenetet. Asszem. Ismerős a feladat? Vagy még nem adták ki ezt HF-nek? :)
--
unix -- több, mint kód. filozófia.

Szerintem ilyen megoldassal senki nem rukkol elo, garantalt a bukas, ha ezt adod be, de a feladatot persze teljesiti. :-)


#!/bin/bash

if [ ${#1} -gt ${#2} ]; then
  diffs=`expr ${#1} - ${#2}`
  rovidebb=$2
  hosszabb=$1
else
  diffs=`expr ${#2} - ${#1}`
  rovidebb=$1
  hosszabb=$2
fi

for i in `seq 1 $diffs`; do rovidebb+="*"; done

echo -e "${rovidebb}\n${hosszabb}"

átküttem az emesenes emilcímedre. Ha nem kaptad meg, sikíts :)
--
unix -- több, mint kód. filozófia.

az előadó is olvassa a fórumokat, úgy tudom..

Csak hogy én se maradjak ki a script kiddie játékból... :)

Feltétel (if) és mindenféle sallang nélküli megoldásom, amely ráadásul működik bash, csh, ksh és zsh-val is:


#!/bin/sh
r=$1; while [ ${#r} -lt ${#2} ]; do r=$r*; done; echo $r
r=$2; while [ ${#1} -gt ${#r} ]; do r=$r*; done; echo $r

;-)