Permalänk
Medlem

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.

Visa signatur

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

Permalänk
Medlem

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.

Permalänk
Medlem

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>

Visa signatur

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

Permalänk
Hedersmedlem

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

Visa signatur

Det kan aldrig bli fel med mekanisk destruktion

Permalänk
Medlem
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.

Visa signatur

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

Permalänk
Hedersmedlem

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."

Visa signatur

Det kan aldrig bli fel med mekanisk destruktion

Permalänk

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/