将Bash脚本变量设置为等于带参数的函数

时间:2014-05-20 19:42:36

标签: bash function parameter-passing

我有一个脚本可以根据日期启动数据库查询。现在,脚本默认为昨天的日期:

function startDate() {
  date --date="yesterday" "+%Y-%m-%d";
}

START= "`startDate`"

我想要做的是将参数传递给脚本,以便cron(或诸如此类)可以具有可配置的日期。我无法为函数和函数调用获得正确的语法:

function startDate() {
  if [ -z "$1" ]
  then 
    date --date="yesterday" "+%Y-%m-%d";
  else
    "$1"
  fi
}

START= "`startDate \"$1\"`"

$ sh shTest.sh 2014-05-19
shTest.sh: line 6: 2014-05-19: command not found
shTest.sh: line 10: : command not found

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

使用BASH你可以:

START="$(startDate "$1")"

此外,您的功能需要echo $1

function startDate() {
  if [ -z "$1" ]
  then 
    date --date="yesterday" "+%Y-%m-%d";
  else
    echo "$1"
  fi
}