Bash函数参数返回错误“未找到命令”

时间:2012-09-02 17:25:24

标签: bash shell .bash-profile bash-function

我在bash脚本中有这个功能,用来创建一个新的jekyll帖子;但它返回参数作为未找到的命令。这是脚本:

 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

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

2 个答案:

答案 0 :(得分:15)

TITLE= "$1"中的空格可能会导致错误。试试TITLE="$1"

答案 1 :(得分:0)

就我而言:

echo "Deploy of `$1` to `$2` project? (Y/N)"

这个问题也存在。当我删除[``]时它已经消失了。不确定你是否粘贴了一个完整的脚本,但要注意args的双引号。

类似的回答https://askubuntu.com/questions/180320/bash-script-program-with-parameters-as-a-single-variable-command-not-found