2012-09-02 8 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の場合、シェルはコマンドとして '' $ 1 ''を解釈し、(空の)環境変数の定義として' TITLE = 'を解釈します。 –

関連する問題