Windows 批处理中如何实现 Linux中的“<< EOF”功能

clark911 发布于 2016/09/19 16:53
阅读 976
收藏 0

诸神在上!

--------------------------------------------------------割---------------------------------------------------

应用场景是这样的,我用一台操作系统是Linux的主机通过ssh远程连到另一台装有mysql数据库的主机,做一些操作。

我有下面一段脚本,在Linux中调用正常。不加“<< EOF”,会提示load不是有效命令。

ssh -t -t root@192.168.13.51 << EOF
mysqldump clark_etl_src tsy_user --where="1=1" >/usr/local/test.sql
exit
EOF



现在,我要在我的windows环境下实现这样的功能,把上面的脚本写在一个bat文件中,然后调用它。

但是,问题来了,windows下面没有“<< EOF”这种标记,我该如何实现呢?

注:我已经在我的windows环境中安装了Open ssh,已经测试可以连上数据库服务器。并且也可以在交互页面执行上面的代码。

加载中
0
zakari
zakari
'mysqldump -u my_db_user -pmy_db_password my_db' > /local/path/to/store/backup.sql
参考试下
clark911
clark911
感谢@zakari ,给了我很大帮助,看到你回答中那段指令用单引号括起来,我想这条指令是不是当做 ssh指令的一个参数,再去搜索ssh教程,发现确实有这种用法,问题终于解决了!
0
zakari
zakari
<< EOF   EOF 直接把这两个东西干掉试下
0
clark911
clark911

引用来自“zakari”的评论

<< EOF   EOF 直接把这两个东西干掉试下
谢谢答复,这两个东西干掉后,只会执行脚本的第一句。
0
clark911
clark911

引用来自“zakari”的评论

'mysqldump -u my_db_user -pmy_db_password my_db' > /local/path/to/store/backup.sql
参考试下

再次感谢@zakari 的耐心解答,我把最终写在windows批处理中的内容贴出来

set remote_cmd="mysql -e \"load data infile '/usr/local/share/clark_etl_target/text_datas.txt' into table emp\" -D clark_etl_target"
ssh -t -t root@192.168.13.51 %remote_cmd%



到这里我明白,在linux shell脚本中也可以把 << EOF EOF 干掉了,哈哈!

注:把命令作为 ssh 参数的这种写法,也可以处理多条命令,参数中的每条命令间用分号隔开即可。如上面的 remote_cmd 可以像这样定义:

set remote_cmd = "cmd1;cmd2;cmd3"

刚接触脚本这东西,描述不准确,用词不专业的地方,大侠们见谅!

返回顶部
顶部