Kezdőlap › Fórumok › Programozás › Bash script
- This topic has 437 hozzászólás, 56 résztvevő, and was last updated 13 years, 6 months telt el by
Goosfrabaa.
-
SzerzőBejegyzés
-
2006-10-03-20:10 #2053269
Ez a bash leirás tetszik…
De mi ez a valami? ”/(‘…’) Ez most egy dolgot akar jelenteni vagy csak lemaradt pár space?2006-10-03-20:12 #2053270„De mi ez a valami? ”/(‘…’) Ez most egy dolgot akar jelenteni vagy csak lemaradt pár space?”
Pl.:
„‘akarmi'”, „$USER”2006-10-07-20:00 #2053271Hali
Egy olyan shell scriptet szeretnék irni ami két szamon végzi el a +,-,*,/ műveleteket.
Így néz ki:
#!/bin/bash
echo $1 $2 $3 = `expr $1 $2 $3`Az első paraméter egy szám a második a művelet a harmadik ismét egy szám. A probléma a szorzással van. Méghozzá az, hogy ha második paraméterként a script egy * jelet kap akkor onnantól a könyvtárlistában található könyvtárak neveit adja át paraméterenként.
Hogyan lehetne ezt kiküszöbölni?2006-10-07-21:35 #2053272Lehet, hogy meg lehet oldani a * karakter bűvölésével is a dolgot, de itt egy egyszerűbb(?) megoldás rá (x karakterrel kezelve a szorzás).
#!/bin/bash
if [ $2 = x ]
then
a=`expr $1 * $3`
echo „$1 $2 $3 = $a”
else
b=`expr $1 $2 $3`
echo „$1 $2 $3 = $b”
fi2006-10-08-06:46 #2053273Ha nem ragaszkodsz az expr-hez, akkor:
a) calc.shCode:#!/bin/bash
EXPR_STR=””function calc () {
awk „BEGIN {print $* ;}”
}calc „${EXPR_STR}”
calc.sh ” 2 * 3 + 3″
b) calc.sh
Code:#!/bin/bashEXPR_STR=””
while test $# -ne 0; do
EXPR_STR=”${EXPR_STR} $1″
shift
donefunction calc () {
awk „BEGIN {print $* ;}”
}calc „${EXPR_STR}”
calc.sh 2 * 3 + 3
calc.sh 2 „*” 3 + 3
calc.sh 2 „*” 3 + 3
calc.sh „2 * 3 + 3”2006-10-08-09:30 #2053274Köszi
Akkor majd valahogy igy csinálom. :wink1:2006-10-08-19:04 #2053275Szia bruit!
A beadandók elkészítése – elvileg – önálló munka. Így ha az itt látott megoldást küldöd el, azt nyílván nem tudom majd ponttal honorálni.
Szerk. (utoljára 🙂 )
Módosítottam a feladatkiírást, hogy a *-gal ne legyen gond. Így az általad kitalált megoldás megfelel a feladatnak, ha azt küldöd el, azt természetesen elfogadom.MyCroft
2006-10-08-19:19 #2053276MyCroft wrote:Szia bruit!A beadandók elkészítése – elvileg – önálló munka. Így ha az itt látott megoldást küldöd el, azt nyílván nem tudom majd ponttal honorálni.
Viszont, az általad kitalált megoldás majdnem jó. Egyetlen karakter hiányzik belőle és tökéletesen megoldaná a kiírt házit.
Az awk-s megoldás amúgy is ágyúval verébre ebben az esetben – ráadásul (még) nem is vettük órán. 🙂Szerk: Jah és a szkriptnek mennie kell (ez benne a pláne) script1 5 * 3 formában
MyCroft
Vazzeg. Akkor küld már el pm-ben. 🙂
Este 10-kor tette fel a kérdést. 01.30-ig sza..kodtam vele. Mindenféle karaktert tettem a csillag elé, mögé, fölé :poketoungeb:, de csak a mappa bejegyzések maradtak a helyén. 🙂2006-10-08-19:37 #2053277Na jó, jogos, az egy karaktert visszavonom 🙂
Trükközgetni lehetne, pl ilyesmivel, hogy
X=echo ${2:0:1}
És megnézed, hogy az $X egyenlő-e a +,-,/ jelekkel, ha nem, akkor (valszeg) * volt.
De jó lesz az script1 3 * 4 formában is 🙂Szerk:
sőt.. ha nincs kint levédve a *, akkor még azzal is gond van, hogy a második szám, amit ($3)-nak várnánk, az általában nem $3 lesz, hanem „hátrébb” csúszik.
Jobban belegondolva, hülyeség volt amit az előző hsz-ben írtam, sorry :blush:2006-10-09-17:35 #2053278Jajj, de csúnyán bebuktam :blink: :closedeyes:
De haudtam volna hogy önállóan kell… 🙂
(mellesleg valahogy ugysem akar jó lenni ha kint levédem a *ot) -
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
legutóbbi hsz