我一直在使用一个非常古老的Solaris系统,并且无法添加更多模块以使我的生活更轻松,而且我正在使用许多使用各种命令行选项的脚本.
我正在做的大部分工作实际上都在工作,但是我想出的东西似乎无法解决.
我正在使用"dd"命令从磁带中提取数据,并需要捕获输出以确定我是否遇到任何磁带读取错误.
("comment()"是我已创建的子程序)
#!/usr/local/bin/perl
$| = 1; #disable output buffering
$tarfile = '/mnt/test/tmp/12345.tar';
@tapeinfo = `dd if=/dev/rmt/1cbn of=$tarfile`;
foreach(@tapeinfo){
#Check to ensure that we're not getting read errors
$result = index($_,'read: I/O error');
if ($result < 0){
#No read error, log result
comment($_);
} else {
# read error, terminate
comment("Terminating due to tape read error : $_");
last; #exit loop if error is found
}
}
#terminate with logging
Run Code Online (Sandbox Code Playgroud)
当脚本运行时,我看到"123 + 0记录,123 + 0记录"被发布到终端屏幕,但我的循环@tapeinfo似乎根本没有测试.我没有收到错误或记录信息.
我错过了一些非常简单的东西吗?
无论如何,我不是一个"命令行"的人.我在整个职业生涯中都是一个前端开发人员,几乎没有与命令行交互,而是尽可能地使用应用程序GUI,所以这对许多人来说可能是一个相当基本的问题.
尝试使用Git时,我遇到了一个小问题.我包含了-m消息标志并尝试了类似于"示例添加功能"的消息,其中"添加"一词被"反引号符号"包围(不能在此处显示,因为这样做会显示单词作为代码,我不知道如何在这个编辑器中逃避它.
我收到了错误: -bash: add: command not found
我过去使用反引号多次围绕函数名称与Git没有任何问题.我假设这里有某种保留关键字,特别是Git或只是Linux中的命令行,但我想知道具体情况是什么,所以我可以理解将来如何避免它.
谢谢.
我在尝试捕获简单命令的输出时遇到了一些问题:
$timeTotal = `echo $timeTotal + $time | bc -l`;
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
sh: +: not found
sh: Syntax error: "|" unexpected
Run Code Online (Sandbox Code Playgroud)
这个命令在bash中运行得很好,但实际上似乎正在使用sh.在一开始我认为问题是管道使用(虽然总和没有得到很好的解释).令我困惑的是,同一脚本中的以下命令不会导致错误并且正常工作:
my $time = `cat $out.$step | bc -l`;
Run Code Online (Sandbox Code Playgroud)
有什么建议?
执行以下代码段时,
sub list {
my($self)=@_;
my $file = $self->{P_Dir}."/".$self->{Name};
print `ls –l $file`;
}
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
ls: cannot access –l: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我不确定是什么原因造成的,因为如果我手动在命令行中键入ls -l,我就不会看到错误.
Is there a way to supress the command output for git if I use backticks in my shell script? Here is my current code:
OUT=$(git status > /dev/null)
Run Code Online (Sandbox Code Playgroud)
Thanks :)
我正在创建一个简单的表,但无法使用保留关键字密码。我尝试使用反引号,但出现错误
Run Code Online (Sandbox Code Playgroud)"Msg 102, Level 15, State 1, Line 7 Incorrect syntax near '`'."
我不想使用双引号,有人可以告诉我如何让这个反引号起作用吗?
CREATE TABLE Users (
NTID VARCHAR(20) PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
MiddleI CHAR(1),
LastName VARCHAR(50) NOT NULL,
EmailAddress VARCHAR(100) UNIQUE,
`Password` VARCHAR(50)
);
Run Code Online (Sandbox Code Playgroud) 我在做什么:
我有以下反引号命令,该命令在简单的 foreach 循环中执行并将命令输出保存到变量,然后对该变量执行字符串匹配操作:
$ciphertestoutput = `echo -n | openssl s_client -cipher $tlsCipher -connect $ipaddress:443 2>/dev/null`;
Run Code Online (Sandbox Code Playgroud)
问题:
但是,当我在输出中运行脚本时,我收到一条错误消息,提示我似乎无法停止出现。我并不担心错误的发生,但我不希望错误显示在我所做的漂亮命令行输出的中间。
我的输出和错误:
EXP-DES-CBC-SHA CIPHER IS SUPPORTED on 192.168.1.22:443
EXP-EDH-DSS-DES-CBC-SHA CIPHER IS NOT SUPPORTED on 192.168.1.22.443
EXP-RC2-CBC-MD5 CIPHER IS NOT SUPPORTED on 192.168.1.22:443
connect: Connection refused <--- the error I cant get rid of
connect:errno=111 <--- the error I cant get rid of
EXP-RC4-MD5 CIPHER IS NOT SUPPORTED on 192.168.1.22:443
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
我已经尝试并尝试了我所知道的各种方法来抑制输出中的错误消息,但我尝试的任何方法都无法阻止此错误的出现。我过去做过很多类似的事情,但从未遇到过这个带有反引号的问题。我在这里缺少什么明显的东西吗?
inter.pl 的代码是:
\nuse strict;\nuse warnings;\n\nmy $var1=`cat /gra/def/ment/ckfile.txt`; #ckfile.txt doesn't exist\nprint "Hello World";\nexit 0;\nRun Code Online (Sandbox Code Playgroud)\next.pl的代码
\nmy $rc = system ("perl inter.pl");\nprint "$rc is rc\\n";\nRun Code Online (Sandbox Code Playgroud)\n在这里,当我运行“perl ext.pl”时,$rc 为 0。
\n虽然 inter.pl (/gra/def/ment/ckfile.txt) 内的文件不存在\xe2\x80\x99t ,但我得到的 $rc 为 0。
\n在同一场景中,我希望 $rc 为 != 0 (在某种程度上,它应该是一个错误,因为文件 ckfile.txt 不存在)。
\n注意: 我无法在 inter.pl 中进行任何修改
\n如何实施?
\n提前致谢。
\n我有一个命令
my $output = `somecommand parm1 parm2`;
Run Code Online (Sandbox Code Playgroud)
当我尝试运行这个Perl脚本时,我得到了消息
Can't exec "somecommand" at .....
Run Code Online (Sandbox Code Playgroud)
似乎没有看到任何超过反击之间的第一个空格.我有一个朋友在不同的环境中运行它,它运行正常.
我的环境中有什么能够导致这种情况发生的?我正在运行Perl v5.20,但我的朋友也是如此.
我在win7上使用AS perl.
print `cd \\\\ `; # does nothing, says nothing
Run Code Online (Sandbox Code Playgroud)
与qx()相同
print `dir \\\\ `; # correctly prints the root directory
Run Code Online (Sandbox Code Playgroud)
其他命令似乎也运行正常.
cd从批处理文件的命令行正常工作.
有没有人见过这个?有解决方法吗?