天天看点

linux command Line and shell script bible(笔记十七)

23.4在脚本中使用数据库

1.查找数据库程序:which mysql

*把命令查找结果赋给一个变量,然当要引用对应的程序时就在shell脚本中使用这个变量即可运行程序。

MYSQL=`which mysql`

$MYSQL test -u love1 -p

*避免从命令行繁琐地输入密码又避免把密码写入脚本中,可以使用$HOME/.my.cnf文件来读取特殊的启动命令和设置。其中一项设置由该用户账户发起的mysql会话的默认密码。

(只要把用户的密码写入配置文件中即可,当密码相应的用户登录时不用输入密码就能登录)

$cat .my.cnf

[client]

password = 'password1'

password = 'password2'

注意:要注意保护此文件,最好把权限也修改到最安全状态

23.4.2 向服务器发送命令

*发送单个命令并退出:发送单个命令必须将命令作为mysql或psql命令行的一步分包含进去。且需要用-e參數

MYSQL=`which mysql`

$MYSQL test -u test -e ' select * from person'

*發送多條sql命令,可以使用文件重定向(參考14.3 exec 0< file 會告訴shell從文件獲得輸入,而不是STDIN)

另外要在shell脚本中重定向行,必须定义一个结束字符串。结束字符串指明了重定向数据的开始和结尾

MYSQL=`which mysql`

$MYSQL test -u test <<EOF

show tables;

select * from person;

EOF

23.4.3 格式化数据,

1.将输出赋给变量

MYSQL=`which mysql`

dbs=`$MYSQL test -u test -Bse 'show databases' `

for db in $dbs

do

    echo $db

done

##############################################

-B参数指定mysql程序工作在批处理模式下

-s参数,禁止列出标题和格式化符号

2.使用格式化标签:mysql和psql程序都提供了一个以HTML格式显示结果的选项。两个程序都可一用-H命令行参数来实现此功能。

mysql可以用-X命令行参数来输出:

$mysql test -u test -X -e 'select * from person'

继续阅读