2012-09-02 8 views
9

Mam tę funkcję w skrypcie basha, aby utworzyć nowy wpis jekyll; ale zwraca argument, ponieważ nie znaleziono polecenia. Oto scenariusz:Argument funkcji Basha zwraca błąd "polecenie nie znaleziono"

function new_post() { 
    if [ -z "$1" ] 
    then 
     read -p "Post Title:" TITLE 
    else 
     TITLE= "$1" 
    fi 
    FILE=$(echo $TITLE | tr A-Z a-z | tr ' ' _) 
    echo -e '---\nlayout: post\ntitle: '$TITLE'\npublished: false\n---\n' > $(date '+%Y-%m-%d-')"$FILE"'.md' 
} 

Ale gdy próbuję go uruchomić zwraca:

$>new_post "Hello World" 
-bash: Hello World: command not found 

Wydaje się być trudny do uruchomienia argumentu jako polecenia.

Próbowałem nawet to i dostał ten sam rezultat

$>TITLE= "Hello World" && echo -e ---layout: post\ntitle: "$TITLE"\n--- 
-bash: Hello World: command not found 

Czy ktoś może mi powiedzieć co robię źle?

Odpowiedz

14

To może być przestrzeń w TITLE= "$1", która powoduje błąd. Spróbuj z TITLE="$1"

+3

pewno jest. 'VAR = VALUE PROGRAM' definiuje zmienną' VAR' tylko dla środowiska 'PROGRAM'. W przypadku OP powłoka interpretuje '' $ 1 "' jako polecenie, a 'TITLE =' jako definicję (pustej) zmiennej środowiskowej dla niego. –