2016-11-30 5 views
0

Ich frage mich, ob es eine Möglichkeit gibt, Skript mit Argument auszuführen, das optional sein kann. Zum BeispielOptionales Argument in SH-Skript

./script (optional parameter X) path 

So ./script /Users/name/Documents Eingabe bestimmte Funktion ausführen würde (Ich gehe davon aus, dass, wenn Aussage von entscheidender Bedeutung sein wird) und ./script X Users/mcichecki/Documents eine andere Funktion ausführt. Ich habe versucht, es mit optionalen Argumenten zu tun, und es hat nicht funktioniert:

ARG1=${1:-R} 

    if [ "$1" = "X" ]; 
    then 
     first_function 
    else 
     second_function 
    fi 

Antwort

1

Wenn das optionale Argument zuletzt waren Sie Standardwerte verwenden könnten. Es funktioniert nicht so gut, wenn es das erste Mal ist.

Verwenden $# die Anzahl der Argumente zu überprüfen, die in übergeben wurden.

case $# in 
    1) ARG1=-R; ARG2=$1;; 
    2) ARG1=$1; ARG2=$2;; 

    *) echo "Usage: $0 [parameterX] path" >&2; exit 1;; 
esac 
Verwandte Themen