Visa RSS-flöde

Tompalaz

Flaggor i bash

Betygsätt det här inlägget
av 2010-03-12 klockan 18:35 (359 Visningar)
Idag fick jag förklarat för mig hur man kan skapa flaggor för ett bash script.
På det här sättet tvingar man användaren att använda flaggor.

Ett script funkar oftast så att man skriver sh scriptnamn -flagga -alternativ -alternativ2 -sökväg
Bash ser dessa som kolumner $0(scriptnamn) $1(flagga) $2(alternativ) $3(alternativ2) $(sökväg)

Ett enkelt program kan se ut så här:
#!/bin/bash

if [ $1 = "-h" ]; then
echo "Hello World!"
elif [ $1 = "-b" ]; then
echo "Bye World!"
else
echo "Du måste använda flaggorna -h eller -b"
fi
om man kör scriptet med flaggan -h returnerar scriptet "Hello World!"
väljer man att använda flaggan -b returneras istället "Bye World!"
Om man inte väljer någon flagga kommer en liten hjälpsida upp som talar om att vi måste använda flaggorna h eller b.

Om vi vill ha med ett andra alternativ ska vi använda oss av kolumn $2.
För att två värden ska stämma överens ska vi använda oss utav &&.
En fungerande rad ser ut såhär:
[...]
if [ $1 = "-b" ] && [ $2 = "-h" ]; then
[...]
Men om man hellre vill använda sig av eller om jag hellre vill använda -h eller --hello-world
så får man skriva:


Säkert finns det många bättre och mer korrekta lösningar men, "If it works, don't fix it"

Skicka "Flaggor i bash" till Digg Skicka "Flaggor i bash" till del.icio.us Skicka "Flaggor i bash" till StumbleUpon Skicka "Flaggor i bash" till Google

Uppdaterad 2010-03-13 klockan 08:07 av Tompalaz

Kategorier
Sysadmin , Programmering

Kommentarer

  1. KingLeffe -
    KingLeffes avatar
    Du kan även använda dig av en case-sats
    Kod:
    #!/bin/sh
    
    case "$1" in
        -h)
            echo "Hello World!"
            ;;
        -b)
            echo "Bye World!"
            ;;
        *)
            echo "Du måste använda flaggorna -h eller -b"
            ;;
    esac
  2. Tompalaz -
    Tompalazs avatar
    Citat Ursprungligen postat av KingLeffe
    Du kan även använda dig av en case-sats
    Kod:
    #!/bin/sh
    
    case "$1" in
        -h)
            echo "Hello World!"
            ;;
        -b)
            echo "Bye World!"
            ;;
        *)
            echo "Du måste använda flaggorna -h eller -b"
            ;;
    esac
    Tack ska du ha, det ska jag prova med!

Trackbacks