下面是一个更大的脚本的shell脚本片段.它从变量保存的字符串中删除引号.我是用sed做的,效率高吗?如果不是那么有效的方法是什么?
#!/bin/sh
opt="\"html\\test\\\""
temp=`echo $opt | sed 's/.\(.*\)/\1/' | sed 's/\(.*\)./\1/'`
echo $temp
Run Code Online (Sandbox Code Playgroud) 按照我正在执行的shell脚本
#!/bin/sh
echo "Enter [y/n] : "
read opt
Run Code Online (Sandbox Code Playgroud)
它的输出是
Enter [y/n] :
Y
Run Code Online (Sandbox Code Playgroud)
我希望变量应该在同一行上读取,如下所示
Enter [y/n] : Y
Run Code Online (Sandbox Code Playgroud)
应该很简单我猜,但我是bash脚本的新手.
我有一个html页面,需要将表格发送到打印机.我现在正在使用window.print ..但是打印整个页面......而我只需要打印表格.有任何想法吗?
我有一个MySQL查询,它连接在两个表之间.我需要将第一个表中的调用id映射到第二个表.第二个表可能没有调用id,因此我需要保持连接表.以下是查询,完成大约需要125秒.
select uniqueid, TRANTAB.DISP, TRANTAB.DIAL FROM
closer_log LEFT JOIN
(select call_uniqueId, sum(dispo_duration) as DISP, sum(dialing_duration) as DIAL
from agent_transition_log group by call_uniqueId) TRANTAB
on closer_log.uniqueid=TRANTAB.call_uniqueId;
Run Code Online (Sandbox Code Playgroud)
这是左连接查询的解释输出.
+----+-------------+----------------------+-------+---------------+----------------------------+---------+------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------------+-------+---------------+----------------------------+---------+------+--------+-------------+
| 1 | PRIMARY | closer_log | index | NULL | uniqueid | 43 | NULL | 37409 | Using index |
| 1 | PRIMARY | <derived2> | ALL | …Run Code Online (Sandbox Code Playgroud) 我在RHEL 5.5 64 bit机器上。
我在机器上安装了ActivePerl 5.10 64位,升级了之前内置的Perl 5.8 64位。我已经启动并运行了 MySQL,并且我的 PHP 项目能够访问它。我的 Perl 文件需要使用 DBD 访问同一数据库,但它无法做到这一点。我已经核实:
以下是我的 Perl 脚本。
#!/usr/bin/perl
use DBI;
$dbh = DBI->connect( "DBI:mysql:go:super218:3306","root","NEWPASSWORD" ) or die "Couldn't connect to database: " . DBI->errstr;
my $sth = $dbh->prepare( "SELECT * FROM phones" )
or die "Can't prepare SQL statement: $DBI::errstr\n";
$sth->execute or die "executing: $stmtA ", $dbh->errstr;
my @row;
while ( @row = $sth->fetchrow_array( ) ) …Run Code Online (Sandbox Code Playgroud) 我正在尝试执行与mysql数据库交互的perl脚本.我在RHEL 5.5,我的mysql版本是5.0.77.它返回错误,它需要DBI.pmperl模块.我尝试通过cpan使用安装它perl -MCPAN -e "install DBI.pm".它尝试一些超时的ftp服务器.
我尝试从cpan的repo手动安装.DBI.pm安装正确,我继续DBD.pm但cpan repo只有mysql 4的DBD.pm.
我迷路了...任何指针?
我需要在我的服务器上确保每分钟最大的新ssh连接数不超过5.
sudo /sbin/iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 5 -j REJECT
Run Code Online (Sandbox Code Playgroud)
以上IPtables规则对我有用,但一分钟后就不允许新连接.
任何指针如何实现这一目标?
我有一个Perl脚本,其中包含一些自定义Perl模块.
我已经使用了脚本来描述Devel::NYTProf,我可以看到包含这些Perl模块的成本我希望最小化.
我已经安装PAR::Packer并编译了我的脚本以使其独立,但它不包括自定义Perl模块.
有什么建议?
编辑:
我需要预先编写脚本,以便每次引发时都不包含编译开销.
我在MySQL中有一个简单的查询
select AGE, NAME from Members;
Run Code Online (Sandbox Code Playgroud)
返回,
20 ABC
11 PQR
21 XYZ
16 REW
Run Code Online (Sandbox Code Playgroud)
我需要有条件地从会员中选择姓名,即如果AGE小于18,我需要打印MINOR。所以我的输出是
20 ABC
11 MINOR
21 XYZ
16 MINOR
Run Code Online (Sandbox Code Playgroud)
我知道我应该以编程方式执行此操作,但是我使用以下命令将输出直接转储为CSV格式的文件:
INTO OUTFILE '$random_file_name' FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\n'
Run Code Online (Sandbox Code Playgroud)
我在MySQL查询本身中有哪些选项可以实现此目的?
我有一个名为test的表:
create table demo (name varchar(10), mark1 int, mark2 int);
Run Code Online (Sandbox Code Playgroud)
我需要多次为每一行提供mark1和mark2的总和.
select name, (mark1 + mark2) as total from demo;
Run Code Online (Sandbox Code Playgroud)
据我所知,效率不高.我不允许在表格中添加新的总列.
我可以在索引中存储这样的业务逻辑吗?
我创建了一个视图
CREATE VIEW view_total AS SELECT name, (mark1 + mark2) as 'total' from demo;
Run Code Online (Sandbox Code Playgroud)
我用以下代码填充了演示表:
DELIMITER $$
CREATE PROCEDURE InsertRand(IN NumRows INT)
BEGIN
DECLARE i INT;
SET i = 1;
START TRANSACTION;
WHILE i <= NumRows DO
INSERT INTO demo VALUES (i,i+1,i+2);
SET i = i + 1;
END WHILE;
COMMIT;
END$$
DELIMITER ;
CALL InsertRand(100000);
Run Code Online (Sandbox Code Playgroud)
执行时间
select …Run Code Online (Sandbox Code Playgroud)