我如何将sql脚本作为参数传递给bash文件?

时间:2018-05-22 18:25:55

标签: sql bash

我需要将sql脚本作为参数传递给bash文件。我的bash文件如下所示

#!/bin/bash

if [ $# -lt 3 ]; then
   echo "Usage: databasename, tablename, script"
exit 1
fi

export DB=$1
export PWD=absc

/research/util/Unload.py -e -d "|" -t $2 -c "MM/DD/YYYY" -s $3

我以这种方式执行bash文件:

./UnloadToInfx.sh "db_name" "mytable" "select * from mytable where city='LA' and date='05/22/2018'"

它支持错误重新定义为3美元,这是sql脚本。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

像这样更改你的脚本(封装$ 1,2,3引用“$ 1”,“$ 2”等)。原因是封装它们会将它们作为你给出参数的程序的一个单元。

否则带空格的字符串将显示为多个参数和任何像*一样的glob字符?将扩展为您当前目录中的文件名,这是您不想要的。

即便如此,请注意你的参数不要以( - )连字符开头,因为它们可能仍被解释为选项开关。

#!/bin/bash

if [ $# -lt 3 ]; then
   echo "Usage: databasename, tablename, script"
exit 1
fi

export DB="$1"
export PWD=absc

/research/util/Unload.py -e -d "|" -t "$2" -c "MM/DD/YYYY" -s "$3"