我正在编写一个 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/