初学者关于 sh 的问题

2014-07-02 02:30:22 +08:00
 ivanlw
最近刚接触sh,知道写一个文件包含多句命令,能依次执行下来。
现在想实现一个功能,就是其中一个命令会进入另外一个程序,然后在那个程序里面执行这个文件的下一句话,这样子有可能实现吗?
比如说
# ----sh file----
mysql
show databases;
# ----end----
这样子把mysql里面的databases打出来?试了一下是不行的,有没有实现这样子的解决方法呢?
2684 次点击
所在节点   Bash
5 条回复
yangqi
2014-07-02 02:39:57 +08:00
mysql -u user -p password -e 'show databases'
multiple1902
2014-07-02 02:40:04 +08:00
有个叫 expect 的工具就可以用来解决这个,经常用在 ssh 连接自动输入密码这件事上。

具体到你的例子,建议你考虑能不能争取把那个子命令作为 mysql 命令的参数,这样整个就是一个命令把事搞定,这样更符合 bash 的编程思想吧。
Comphuse
2014-07-02 02:51:38 +08:00
echo "show databases" | mysql -u 用户名 -p密码。 # -p 和 密码之间没有空格。
mysql -u 用户名 -p密码 < SQL脚本文件。
blacktulip
2014-07-02 02:54:10 +08:00
mysql -h localhost -u <USERNAME> -p="<PASSWORD>" -D <DATABASE> -e "show databases;show databases;show databases"
orzfly
2014-07-02 09:01:28 +08:00
http://stackoverflow.com/a/6150728/2724079

mysql --host=localhost --user=user --password=password << 'END'

CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'jakdJxct8W';
CREATE DATABASE IF NOT EXISTS 'testuser_dev' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON 'testuser_dev' . * TO 'testuser'@'localhost';
CREATE DATABASE IF NOT EXISTS 'testuser_qa' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON 'testuser_qa' . * TO 'testuser'@'localhost';

END

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/120508

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX