Perl 使用 qx 中的 find

标签 perl find syntax-error qx

我正在编写一个 Perl 脚本,该脚本需要 SSH 到许多远程服务器来执行一些日志文件的 gzip 压缩。在下面的行中,我不断收到此错误,并且正在努力确定导致此错误的原因。我收到的错误是;

bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `cd /appdata/log/cdmbl/logs/; echo cd /appdata/log/cdmbl/logs/; find . -type f ( -iname '*' ! -iname '*.gz' ) -mmin +1440 ;; exit 0'

当然,正如您可以从错误中看出的那样,我尝试编写的行是;

my $id = qx{ssh -q $cur_host "cd $log_path; echo cd $log_path; find . -type f \( -iname '*' ! -iname '*.gz' \) -mmin +1440 \;; exit 0"};

我是否忽略了这里导致意外标记“(”问题的原因 收到?

注意:我从 find 中删除了 -exec,这样我就可以看看是否可以先解决这个问题。

谢谢。

最佳答案

您需要为 shell 添加反斜杠括号。在双引号中使用单反斜杠是不够的,Perl 删除了反斜杠。使用双反斜杠 \\(.

关于Perl 使用 qx 中的 find,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25887658/

相关文章:

java - 将 ByteArrayOutputStream 发送到 Perl 脚本,然后读取响应

在 Perl 中解压 32 位 vector 以读取用 C 编写的 uint32 的正确方法

regex - Visual Studio 2013 使用 REGEX 查找和替换无法正确替换

python - 使用ast.literal_eval()清理数据时出现语法错误

python - 标准化特定语言的发布/工具组

perl - 如何在bat文件中指定Cygwin模式下需要调用的脚本?

Linux:查找命令性能问题

javascript - 在字符串中查找div id并删除整个div

syntax - 编程中的语义与语法分析

mysql - 我找不到所描述的语法错误有人可以指出错误并提供解释我做错了什么吗?