标签: backticks

无法使用反引号捕获"dd"的输出

我一直在使用一个非常古老的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似乎根本没有测试.我没有收到错误或记录信息.

我错过了一些非常简单的东西吗?

unix perl solaris dd backticks

1
推荐指数
1
解决办法
1760
查看次数

在关于Git命令的命令行调用中,反引号 - " - 做了什么?

无论如何,我不是一个"命令行"的人.我在整个职业生涯中都是一个前端开发人员,几乎没有与命令行交互,而是尽可能地使用应用程序GUI,所以这对许多人来说可能是一个相当基本的问题.

尝试使用Git时,我遇到了一个小问题.我包含了-m消息标志并尝试了类似于"示例添加功能"的消息,其中"添加"一词被"反引号符号"包围(不能在此处显示,因为这样做会显示单词作为代码,我不知道如何在这个编辑器中逃避它.

我收到了错误: -bash: add: command not found

我过去使用反引号多次围绕函数名称与Git没有任何问题.我假设这里有某种保留关键字,特别是Git或只是Linux中的命令行,但我想知道具体情况是什么,所以我可以理解将来如何避免它.

谢谢.

linux bash command-line backticks

0
推荐指数
1
解决办法
1736
查看次数

Perl在使用管道时反击

我在尝试捕获简单命令的输出时遇到了一些问题:

$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)

有什么建议?

perl sh backticks

0
推荐指数
1
解决办法
1842
查看次数

Perl反引号:标志不存在

执行以下代码段时,

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,我就不会看到错误.

perl ls backticks

0
推荐指数
1
解决办法
332
查看次数

How can I suppress command output when using backticks?

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 :)

linux git bash backticks

0
推荐指数
1
解决办法
1147
查看次数

MySQL 无法对保留关键字使用反引号

我正在创建一个简单的表,但无法使用保留关键字密码。我尝试使用反引号,但出现错误

"Msg 102, Level 15, State 1, Line 7 Incorrect syntax near '`'."
Run Code Online (Sandbox Code Playgroud)

我不想使用双引号,有人可以告诉我如何让这个反引号起作用吗?

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)

mysql keyword reserved backticks

0
推荐指数
1
解决办法
579
查看次数

Perl - 停止命令行输出中出现的错误

我在做什么:

我有以下反引号命令,该命令在简单的 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)

我尝试过的:

我已经尝试并尝试了我所知道的各种方法来抑制输出中的错误消息,但我尝试的任何方法都无法阻止此错误的出现。我过去做过很多类似的事情,但从未遇到过这个带有反引号的问题。我在这里缺少什么明显的东西吗?

error-handling bash perl backticks output

0
推荐指数
1
解决办法
1065
查看次数

当系统命令内的脚本运行不顺利时,需要退出状态!=0

inter.pl 的代码是:

\n
use strict;\nuse warnings;\n\nmy $var1=`cat /gra/def/ment/ckfile.txt`;  #ckfile.txt doesn't exist\nprint "Hello World";\nexit 0;\n
Run Code Online (Sandbox Code Playgroud)\n

ext.pl的代码

\n
my $rc = system ("perl inter.pl");\nprint "$rc is rc\\n";\n
Run 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

perl system backticks exitstatus

0
推荐指数
1
解决办法
255
查看次数

Perl反引号忽略了第一个空格的所有内容

我有一个命令

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,但我的朋友也是如此.

perl backticks

-1
推荐指数
1
解决办法
67
查看次数

perl反引号不适用于cd.为什么?

我在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从批处理文件的命令行正常工作.

有没有人见过这个?有解决方法吗?

perl backticks

-5
推荐指数
1
解决办法
663
查看次数

标签 统计

backticks ×10

perl ×7

bash ×3

linux ×2

command-line ×1

dd ×1

error-handling ×1

exitstatus ×1

git ×1

keyword ×1

ls ×1

mysql ×1

output ×1

reserved ×1

sh ×1

solaris ×1

system ×1

unix ×1