Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Okt 2003

Konsoll-script?

Hur gör jag en .sh-fil som kör massa kommandon i konsollen?

Skulle gärna vilja kunna be den avbryta vissa saker (till exempel om den får som svar att något inte funkar osv.) och kunna använda "vill du göra det här? Y/N"-grejer... om det inte är allt för avancerat.

Macbook Pro 15" (2,4 GHz Core Duo)

Trädvy Permalänk
Medlem
Plats
Malmö
Registrerad
Jul 2001

vanligt bashscript exempel:

#!/bin/bash # # visar uptime # UP=`uptime` echo $UP

men typ något sånt... glöm inte att "chmod +x filen" för att du ska kunna köra den med.

Trädvy Permalänk
Medlem
Registrerad
Jul 2001

Läs valfri 'Shell scripts for dummies'...

Fast ska du prata med processer är nog int shell script rätt väg....

#vi <filnamn> #chmod +x <filnamn>

We live in the age o stupidity || SparcStation 20,384mb RAM,1gb disk,2*125mhz, Solaris8
--------------------------------------------------------------------------------------------
Every suicide is a solution to a problem. -- Jean Baechler

Trädvy Permalänk
Hedersmedlem
Registrerad
Jul 2001

Inled filen med #!/bin/sh. Detta talar om vilket program som skall användas för att tolka filen.
Du kan använda if-satser för att bestämma vad som skall hända om ett program ger ifrån sig en felkod, ex:

if make buildkernel KERNCONF=CUSTOM-MARVIN then echo "buildkernel OK $DATE" >$LOG if make installkernel KERNCONF=CUSTOM-MARVIN then echo "installkernel OK $DATE" >>$LOG else echo "installkernel failed! $DATE" >>$LOG fi else echo "buildkernel failed! $DATE" >$LOG fi

Om kommandot "make buildkernel KERNCONF=CUSTOM-MARVIN" lyckas, då körs det som står under then, annars det som står under else.
Det senast körda programmets felkod spottas också alltid ut till $?
så om echo $? ger dig en nolla, då gick allting bra.

För att läsa in ett svar från användaren till variabeln $VAL använder du read VAL.
Vill du sedan köra olika saker beroende på vad som hamnade i $VAL kan du använda en vanlig if-sats eller kommandot case om du har fler val än y/n.

gör sedan scriptet exekverbart med chmod 755 scriptnamn.sh.

bra läsning:
http://mercury.chem.pitt.edu/~sasha/LinuxFocus/English/Septem...
http://members.toast.net/art.ross/rute/node11.html

Bienvenido a la maldad

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Okt 2003
Citat:

Ursprungligen inskrivet av Aphex
Inled filen med #!/bin/sh. Detta talar om vilket program som skall användas för att tolka filen.
Du kan använda if-satser för att bestämma vad som skall hända om ett program ger ifrån sig en felkod, ex:

if make buildkernel KERNCONF=CUSTOM-MARVIN then echo "buildkernel OK $DATE" >$LOG if make installkernel KERNCONF=CUSTOM-MARVIN then echo "installkernel OK $DATE" >>$LOG else echo "installkernel failed! $DATE" >>$LOG fi else echo "buildkernel failed! $DATE" >$LOG fi

Om kommandot "make buildkernel KERNCONF=CUSTOM-MARVIN" lyckas, då körs det som står under then, annars det som står under else.
Det senast körda programmets felkod spottas också alltid ut till $?
så om echo $? ger dig en nolla, då gick allting bra.

För att läsa in ett svar från användaren till variabeln $VAL använder du read VAL.
Vill du sedan köra olika saker beroende på vad som hamnade i $VAL kan du använda en vanlig if-sats eller kommandot case om du har fler val än y/n.

gör sedan scriptet exekverbart med chmod 755 scriptnamn.sh.

bra läsning:
http://mercury.chem.pitt.edu/~sasha/LinuxFocus/English/Septem...
http://members.toast.net/art.ross/rute/node11.html

Så jag gör bara ett textdokument som inleds med "#!/bin/sh", sen är det bara vanligt konsollspråk?

EIDT: Konsollspråk + lite extra kommandon som inte finns i konsollen.

Macbook Pro 15" (2,4 GHz Core Duo)

Trädvy Permalänk
Hedersmedlem
Registrerad
Jul 2001

De finns i konsollen också, men det är lite knöligt att skriva dem på rad.

Prova tex
echo "namn?" ; read val ; echo "hej $val."

Bienvenido a la maldad

Trädvy Permalänk
Medlem
Registrerad
Nov 2004

Referensen för bash är ju man-sidan, som är mycket (!) välfylld.

Ett annat tips är:

http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

och när du vill lära dig lite häftigare saker:

http://www.tldp.org/LDP/abs/html/