我需要将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脚本。我该如何解决这个问题?
答案 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"