2012-09-02 16 views
9

Ho questa funzione in uno script bash, per creare un nuovo post jekyll; ma restituisce l'argomento come comando non trovato. Ecco lo script:L'argomento della funzione Bash restituisce l'errore "comando non trovato"

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' 
} 

Ma ogni volta che provo a farlo funzionare ritorna:

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

Sembra essere il tentativo di eseguire l'argomento come un comando.

Ho anche provato questo e ha ottenuto lo stesso risultato

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

Qualcuno può dirmi che cosa sto facendo male?

risposta

14

Potrebbe essere lo spazio in TITLE= "$1" che causa l'errore. Prova con TITLE="$1"

+3

Definitivamente lo è. 'VAR = VALUE PROGRAM' definisce una variabile' VAR' solo per l'ambiente di 'PROGRAM'. Nel caso dell'OP la shell interpreta '" $ 1 "' come comando e 'TITLE =' come la definizione di una variabile di ambiente (vuota) per esso. –