2012-09-02 22 views
9

Tengo esta función en un script bash, para crear una nueva publicación jekyll; pero devuelve el argumento como comando no encontrado. Aquí está la secuencia de comandos:El argumento de la función Bash devuelve el error "comando no encontrado"

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

Pero cada vez que intento ejecutarlo vuelve:

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

Parece estar tratando de correr el argumento como un comando.

incluso intenté esto y tiene el mismo resultado

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

Alguien puede decirme lo que estoy haciendo mal?

Respuesta

14

Puede ser el espacio en TITLE= "$1" el que causa el error. Pruebe con TITLE="$1"

+3

Definitivamente es. 'VAR = VALUE PROGRAM' define una variable' VAR' para el entorno de 'PROGRAM' solamente. En el caso del OP, el shell interpreta '" $ 1 "' como un comando y 'TITLE =' como la definición de una variable de entorno (vacía) para él. –

Cuestiones relacionadas