Avatar billede dennism Nybegynder
13. januar 2008 - 18:00 Der er 16 kommentarer og
1 løsning

Linux: Shell Script

Jeg kører Ubuntu 7.10 og har lavet et shell script som hedder myBackup.sh. Hvordan kan jeg lave sådan, at det bliver kørt, når jeg i terminalen skriver "myBackup"?

Hvordan laver jeg i øvrigt sådan, at man i mit shell script kan tage argumenter fra kaldet? Sådan at jeg f.eks. kan fange "myBackup --media", hvor den så kun tager backup af media? Må kunne lave en if-sætning som kan spørge om der står "--media" som argument?
Avatar billede arne_v Ekspert
13. januar 2008 - 18:07 #1
put:

#! /bin/bash

i første linie og giv execute permission:

chmod +x filnavn

så kan du køre den med:

./filnavn
Avatar billede arne_v Ekspert
13. januar 2008 - 18:07 #2
Bare med:

filnavn

hvis . er i PATH, men det er den forhåbentligt ikke !
Avatar billede arne_v Ekspert
13. januar 2008 - 18:09 #3
argumenter afhænger af hvilken shell du bruger men hvis vu anrager bash, så er først argument i $1, andet i $2
Avatar billede arne_v Ekspert
13. januar 2008 - 18:11 #4
... hvis vi nu antager ...
Avatar billede arne_v Ekspert
13. januar 2008 - 18:12 #5
Hvis du skal igang med at kave nogle shell scripts så find en tutorial på nettet og
brug en halv time på at lære lidt fif - det er faktisk ikke svært.
Avatar billede dennism Nybegynder
13. januar 2008 - 18:19 #6
Jeg er med på, hvordan man kører en sh-fil!
Jeg vil dog gerne have istedet, at jeg alle steder i min terminal kan skrive: myBackup

Lige som med gedit, cp, firefox m.m.
Avatar billede arne_v Ekspert
13. januar 2008 - 18:22 #7
Så skal du have det dir hvor scriptet ligger med i PATH.
Avatar billede dennism Nybegynder
13. januar 2008 - 18:31 #8
Ja, det er jeg også med på! Men jeg vil gerne have at "programmet" ALTID kan køres ved at skrive myBackup som ved alle andre programmer der er installeret!
Avatar billede arne_v Ekspert
13. januar 2008 - 18:39 #9
Der er ikke nogen magi i andre programmer.

De kan kun kaldes af alle fordi de ligger i et dir som er i PATH for alle
(/usr/bin eller tilsvarende).

Enten må du kopiere dit script til sådan et sted eller tilføje det sted dit script ligger
til alles PATH.
Avatar billede dennism Nybegynder
13. januar 2008 - 18:54 #10
Tak!

Hvordan laver man "else-if" sætninger i shell?

Jeg forsøger med følgende:

if [ "$1" = "--media" ]; then
    backupMedia;
else if [ "$1" = "--document" ]; then
    backupDocument;
else if [ "$1" = "--usb" ]; then
    backupUSB;
else
    backupAll;
fi
Avatar billede arne_v Ekspert
13. januar 2008 - 20:38 #11
else if er elif
Avatar billede arne_v Ekspert
13. januar 2008 - 20:50 #12
Eksempel:

#!/bin/bash
if [ "$1" = "ABC" ]; then
    echo "ABC"
elif [ "$1" = "DEF" ]; then
    echo "DEF"
else
    echo "$1 er ikke ABC eller DEF"
fi
Avatar billede lassebm Nybegynder
14. januar 2008 - 08:49 #13
Du kan evt lave et symlink fra /usr/sbin til /stien/myBackup.sh

eks:

ln -s /sti/til/myBackup.sh /usr/sbin/myBackup.sh

Så kan du åbne myBackup.sh ALLE steder fra, altså så længe din bruger har adgang til sbin (root) ellers skal du bare linke til /usr/bin i stedet for....
Avatar billede bingo789 Nybegynder
17. januar 2008 - 20:55 #14
Hvis du skal bruge argumenter til din kommando, skal du bruge et "case statement" og ikke et "if statement". Eks.

case "$1" in
test1)
echo "Dette er 'test1' argument"
;;
test2)
echo "Dette er 'test2' argument"
;;
esac

Når dit script er færdigt, så læg det evt. i /usr/local/bin. Hvis du ønsker, at lægge det et sted som ikke er en del af dit $PATH, må du tilføje den sti til dit $PATH permanent. Hvis du f.eks. bruger en korn shell, tilføjer du stien i i din profile, som ligger her: $HOME/.profile
Avatar billede arne_v Ekspert
18. januar 2008 - 02:49 #15
Man kan godt teste på argument i en if (ihvertfald i bash, men jeg formoder også i andre shells).
Avatar billede dennism Nybegynder
28. januar 2008 - 23:31 #16
Smider du et svar, arne?
Avatar billede arne_v Ekspert
29. januar 2008 - 00:39 #17
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester