我没有Perl的经验。我们正在尝试使用Perl脚本将我们的250MB数据库移动到MySQL中,该脚本被安排为Cron作业Rackspace云推荐了这个脚本:
#!/bin/sh mysql -h DB_HOST -u DB_USER -p'DB_PASSWORD' DB_NAME < /path/to/file/db_import.sql
我已经填写了变量(这篇文章的用户和传递已经改变):
!/ bin / sh mysql -h mysql51-032.wc1:3306 -u 806637_Admin -p ' ******* '806637_Vs_Hl&lt; /mnt/stor09-wc1-ord1/762283/806637/www.vs-hl.com/Vs-hlDB/Vs-DB.sql
进行一些研究我发现'#'在Perl中开始注释,所以我将其删除了,这就是我收到的错误报告:
Bareword发现运营商预计在main.pl第1行附近 “/ bin / sh”(在h之前缺少运算符?)
Bareword发现运营商预计在main.pl第1行附近 “806637_VMHAdmin”(VMHAdmin之前缺少运算符?)
找到运营商在main.pl第1行附近预期的数字 “'Admin1234'806637_”(806637之前缺少操作员_?)
Bareword发现运营商预计在main.pl第1行附近 “806637_Vets_Hall”(在Vets_Hall之前缺少运算符?)
在main.pl第1行的语法错误,靠近“/ bin / sh mysql”
由于编译错误,main.pl的执行中止。
我的问题是我的语法错误是什么? 谢谢你的阅读!
答案 0 :(得分:1)
这不是Perl脚本,而是Bourne Shell脚本。只需将其移到两个单独的行上即可。
#!/bin/sh
mysql ...
请注意,#!
必须是文件的前两个字符。没有空行可以继续。
答案 1 :(得分:0)
Perl&#34;脚本&#34;和shell脚本不是一回事。因此,在与程序员打交道时,我称之为&#34; Perl程序&#34;因为Perl是一种功能完备的编程语言。这是一个使用2个单独行的shell脚本:
#!/bin/sh
mysql ...
这与Perl无关。如果要在Perl中执行命令,可以在Perl程序中执行此操作。我称之为doit.pl:
# Note I'm using backticks, and any error msgs are in $msg.
$msg=`mysql -h DB_HOST -u DB_USER -p'DB_PASSWORD' DB_NAME < /path/to/file/db_import.sql`;
print "Messages are: $msg\n";
如果命令行中没有任何内容发生变化,您就不需要Perl。如果您正在循环并复制许多数据库名称,则可以使用Perl。