shell脚本中sql语句得到一个值,赋值给变量出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell脚本中sql语句得到一个值,赋值给变量出错相关的知识,希望对你有一定的参考价值。

参考技术A 你没有理解输入重定向的概念。在你上面的代码中,mysql
-uddap
-p$2是包含在输入重定向范围内的,所以不会提示你输入密码的。
你的$1
和$2也没有定义,可以参考如下写法:
#!/bin/sh
read
-p
"please
input
root
password"
pwd
mysql
-uroot
-p$pwd
<<
eof
\.
/usr/src/ddap-1.createuser.sql
\.
/usr/src/ddap-2.createdatabase.sql
\.
/usr/src/ddap-3.createtable.sql
\.
/usr/src/ddap-4.createprocedureandfunction.sql
\.
/usr/src/ddap-5.createdata.sql
eof

Shell脚本----循环!

以案例来理解循环

一、for循环语句

第一种方式:

for 变量名 in 取值列表
do
	命令序列
done
  • for语句执行流程:先将列表中的第一个取值赋值给变量,并执行do……done之间循环体的命令序列,然后将列表中的第二个取值赋值给变量,执行do……done中的命令序列,以此类推,直到列表中的取值都用完
[root@localhost ww]# vim xh.sh
#!/bin/bash
for i in {1..5}
do
        echo $i
done
[root@localhost ww]# bash xh.sh
1
2
3
4
5 
[root@localhost ww]# vim xh.sh
#!/bin/bash
for i in {1..5}
do
        echo hello
done
[root@localhost ww]# bash xh.sh
hello
hello
hello
hello
hello
[root@localhost ww]# vim xh.sh
#!/bin/bash
#列出1到10中的偶数
for i in {1..100}
do
        if [[ $i%2 -eq 0 ]];then
        echo $i
        fi
done
[root@localhost ww]# bash xh.sh
2
4
6
8
10      
[root@localhost ww]# vim xh.sh
#!/bin/bash
#计算1到100所有偶数的和
c=0
for i in {1..100}
do
        if [ $((i%2)) -eq 0 ];then
        c=$((i+c))
        fi
done
echo $c
[root@localhost ww]# bash xh.sh
2550
[root@localhost ww]# vim user.sh 
#!/bin/bash
#创建多个用户并设置密码
for i in {1..10}
do
useradd username$i
echo "123" | passwd --stdin username$i &> /dev/null
echo "unsename${i}用户已创建"
done
[root@localhost ww]# vim star.sh 
#!/bin/bash
for i in {1..5}
do
        for a in {1..5}
        do
                echo -n "* " //*后面有个空格
        done
        echo    //echo表示换行
done
[root@localhost ww]# bash star.sh 
* * * * * 
* * * * * 
* * * * * 
* * * * * 
* * * * *

第二种方式

[root@localhost ww]# vim xh.sh
#!/bin/bash
for ((i=1;i<3;i++))
do
        echo xxx
done
[root@localhost ww]# bash xh.sh
xxx
xxx   

二、while循环语句

while循环语句,判断条件测试结果,如果条件成立则执行命令序列,返回while条件测试,条件成立继续循环执行命令序列,直到条件不成立位置,使用while语句时应该避免出现死循环现象

while 条件测试操作     
do
	命令序列
done

对于死循环的结束命令

break 退出当前循环,任然执行循环外的命令
continue,不进行后面的命令序列,重新循环
exit 退出脚本
[root@localhost ww]# vim wl.sh
#!/bin/bash
#打印1到5的整数
i=1
while [ $i -le 5 ]
do
        echo $i
        let i++
done
[root@localhost ww]# bash wl.sh 
1
2
3
4
5
[root@localhost ww]# vim wl.sh
#!/bin/bash
#计算1到100的和
i=1
a=0
while [ $i -le 100 ]
do
        a=$((a+i))
        let i++
done
echo $a
[root@localhost ww]# bash wl.sh 
5050
[root@localhost ww]# vim c.sh
#!/bin/bash
n=6
while true        
####这里用true表示永远为真,循环会一直执行
do
        read -p "请输入一个数字 :" i
        if [ $i -eq $n ];then
                echo "你猜对了"
                break                //添加break,猜对了就会退出循环
        elif [ $i -lt $n ];then
                echo "你猜小了"
        elif [ $i -gt $n ];then
                echo "你猜大了"
        fi
done
[root@localhost ww]# bash c.sh
请输入一个数字 :5
你猜小了
请输入一个数字 :	7
你猜大了
请输入一个数字 :2
你猜小了
请输入一个数字 :6
你猜对了

三、untli循环语句

untli语句就是跟while相反的语句,while语句时条件成立才循环,untli语句实在条件不成立才循环

[root@localhost ww]# vim hh.sh 
#!/bin/bash
i=1
a=0
until [ $i -ge 100 ]
do
        a=$((i+a))
        let i++
done
echo $a
[root@localhost ww]# bash hh.sh 
4950        //条件不成立即i小于100才循环执行命令序列

以上是关于shell脚本中sql语句得到一个值,赋值给变量出错的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本怎样读取文件的值,并赋值给变量

bat脚本如何将命令执行的结果赋值给变量

怎么给bash shell当中的变量获取awk行处理后得到的值

Shell脚本----循环!

shell中调用sql 语句,再将结果返回shell作为变量

在shell脚本中使用 isql 执行SQL语句 查询sybase数据库中满足条件的记录条数,怎么把查询结果赋给变量?