内部脚本我有SQL查询,我执行。但是我想做一个变量来指示我想要运行的SQL脚本。例如:
#!/bin/bash
SQL1 = "Select * from dual"
SQL1 = "Select sysdate from dual"
SQL3 = "Select sysdate+1 from dual"
现在,我想运行一个脚本,例如。 ./script.sh 2
- >这表示我想运行第二个SQL查询。
最简单的方法可能是这样做:
if [ $1 = 1 ] then
SQL1 = "Select * from dual"
if [ $1 = 2] then
SQL2 = "Select sysdate from dual"
if [ $1 = 3] then
SQL3 = "Select sysdate+1 from dual"
fi fi fi
现在,问题是,如果我想运行所有这些,那么我将运行我的脚本:./script.sh
(无变量)。
我知道我不能使用[-z]但是,我不想重复SQL查询,例如。
if [ $1 = 1 ] then
SQL1 = "Select * from dual"
if [ $1 = 2] then
SQL2 = "Select sysdate from dual"
if [ $1 = 3] then
SQL3 = "Select sysdate+1 from dual"
fi fi fi
if [ -z $1 ] then
SQL1 = "Select * from dual"
依旧...... 如何处理?
答案 0 :(得分:4)
为什么不使用数组并检查索引是否存在并采取相应措施?
看到它只是打印:
#!/bin/bash
commands=("SELECT 1" "SELECT 2" "SELECT 3")
line=$(($1 - 1))
[ "${commands[$line]+abc}" ] && echo "${commands[$line]}" || printf "%s\n" "${commands[@]}"
这使用了很好的技巧check an index or a key in an array。
让我们执行它:
$ ./myscript.sh 5
SELECT 1
SELECT 2
SELECT 3
$ ./myscript.sh 2
SELECT 2
答案 1 :(得分:1)
您可以检查arg的数量而不是-z。
if [ $# -eq 0 ]; then .....