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语句得到一个值,赋值给变量出错的主要内容,如果未能解决你的问题,请参考以下文章
怎么给bash shell当中的变量获取awk行处理后得到的值