2012-09-02 102 views
9

我在bash脚本中创建了一个新的jekyll帖子;但它会返回参数作为未找到的命令。这里的脚本:Bash函数参数返回错误“未找到命令”

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

但每当我尝试运行它,它返回:

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

这似乎是试图运行参数的命令。

我甚至尝试这样做,得到了相同的结果

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

谁能告诉我什么,我做错了什么?

回答

14

它可能是导致错误的TITLE= "$1"中的空格。试着用TITLE="$1"

+3

肯定是。 'VAR = VALUE PROGRAM'只为'PROGRAM'的环境定义一个变量'VAR'。在OP的情况下,shell将''$ 1“'解释为命令,将'TITLE ='解释为它的(空)环境变量的定义。 –