Simpel Bash programmering
Simpel Bash programmering
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?
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?
- Osprey
- Inlägg: 6310
- Blev medlem: 06 apr 2008, 00:09
- OS: Ubuntu
- Ort: Göteborg/Mölndal/Falkenberg
- Kontakt:
Re: Simpel Bash programmering
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... 

Agera genom att ta och behålla initiativet, ta de risker detta kräver...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
http://www.enargo.com/it/
OpenVMS Shark - i Linux finns inte SYS$CMKRNL...
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Simpel Bash programmering
"$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:
"${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:
Kod: Markera allt
for ARG
do
echo "$ARG"
done
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
Åh va bra. Nu börjar det se till att bli i ordning.
Har gjort ett litet script som listar alla mappar och filer.
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.

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
- johanre
- Serveradmin
- Inlägg: 3888
- Blev medlem: 22 okt 2006, 09:13
- OS: Ubuntu
- Utgåva: 22.04 Jammy Jellyfish LTS
- Ort: Malmö
Re: Simpel Bash programmering
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: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.
Kod: Markera allt
find ./ -maxdepth 1 -type f
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Simpel Bash programmering
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...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.Kod: Markera allt
#!/bin/sh mapp="/home/emil" ag="$1" for i in "$mapp"/*.$ag do echo ${i%%.$ag} done
Kod: Markera allt
for i in "$mapp"/*.$ag
do
if [ -f "$i" ]
then
echo ${i%%.$ag}
fi
done
Re: Simpel Bash programmering
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?

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?

- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Simpel Bash programmering
Jag vet inte om det går annat än genom att byta font.emilvr6 skrev:Men tput italic; funkade inte så bra... någon som har en aning?
Vill du ha understruken text så kan du få det med tput smul