Sida 1 av 1
Simpel Bash programmering
Postat: 29 nov 2010, 22:12
av emilvr6
Jag håller på att titta på BASH programmering.
Jag har gjort några enkla program med några if satser och så.
Men jag vill göra ett program där jag kan lägga till argument direkt när jag kör filen, så här:
./scriptet A
Där A startar en funktion i scriptet som inte startas när man bara kör
./scriptet
Hur gör jag?
Re: Simpel Bash programmering
Postat: 29 nov 2010, 22:24
av Osprey
Argumenten finns alltid med automatiskt och inne i scriptet kan du komma åt dem med $1 för det första argumentet och sedan $2, $3, $4 etc. $0 är namnet på själva scriptet och $@ är alla argumenten på en gång...

Re: Simpel Bash programmering
Postat: 29 nov 2010, 23:06
av Konservburk
"$1" är första argumentet
"${10}" är tionde argumentet
"$#" är antalet argument
"$@" är alla argument som en sträng vardera
"$*" är alla argument som en enda sträng
Det går enkelt att stega igenom alla argumenten med en vanlig for-loop:
shift plockar bort det första argumentet
shift 2 plockar bort de två första argumenten
getopts hittar flaggor bland argumenten:
Kod: Markera allt
while getopts ab: OPT
do case "$OPT" in
a)
echo flaggan -a hittad
;;
b)
echo flaggan -b hittad med argument: "$OPTARG"
;;
esac
done
Re: Simpel Bash programmering
Postat: 30 nov 2010, 22:58
av emilvr6
Åh va bra. Nu börjar det se till att bli i ordning.
Har gjort ett litet script som listar alla mappar och filer.
Kod: Markera allt
#!/bin/sh
mapp="/home/emil"
ag="$1"
for i in "$mapp"/*.$ag
do
echo ${i%%.$ag}
done
Men om jag bara vill lista filer och inga mappar? Hur gör jag? Får det inte att funka. Mapparna kommer hela tiden med.
Re: Simpel Bash programmering
Postat: 30 nov 2010, 23:12
av johanre
emilvr6 skrev:Men om jag bara vill lista filer och inga mappar? Hur gör jag? Får det inte att funka. Mapparna kommer hela tiden med.
Nu var det inte detta du var ute efter men jag kastar in detta mest som ett exempel på hur man kan lösa samma problem på många olika sätt:
Re: Simpel Bash programmering
Postat: 30 nov 2010, 23:38
av Konservburk
emilvr6 skrev:Kod: Markera allt
#!/bin/sh
mapp="/home/emil"
ag="$1"
for i in "$mapp"/*.$ag
do
echo ${i%%.$ag}
done
Men om jag bara vill lista filer och inga mappar? Hur gör jag? Får det inte att funka. Mapparna kommer hela tiden med.
Om vi utgår från din kod så kan du lägga till en if-sats som kontrollerar så att det verkligen är en fil...
Kod: Markera allt
for i in "$mapp"/*.$ag
do
if [ -f "$i" ]
then
echo ${i%%.$ag}
fi
done
Re: Simpel Bash programmering
Postat: 02 dec 2010, 23:03
av emilvr6
Nu börjar det se vackert ut!
Nu har jag fixat så texten blir "fet" men hur gör jag så den blir kursiv?
Jag använde mig av kommandot:
tput bold;
echo "texten"
tput sgr0;
Men tput italic; funkade inte så bra... någon som har en aning?

Re: Simpel Bash programmering
Postat: 02 dec 2010, 23:33
av Konservburk
emilvr6 skrev:Men tput italic; funkade inte så bra... någon som har en aning?

Jag vet inte om det går annat än genom att byta font.
Vill du ha understruken text så kan du få det med
tput smul