我正在尝试打印出用单引号括起来的文本。
/bin/bash -lc '/home/CASPER_REPORTS/scripts/CASPER_gen_report.sh CASPER_1'
/bin/bash -lc '/home/CASPER_REPORTS/scripts/CASPER_gen_report.sh CASPER_1A'
/bin/bash -lc '/home/CASPER_REPORTS/scripts/CASPER_gen_report.sh CASPER_2'
/bin/bash -lc '/home/CASPER_REPORTS/scripts/CASPER_gen_report.sh CASPER_3'
/bin/bash -lc '/home/CASPER_REPORTS/scripts/CASPER_gen_report.sh CASPER_3A'
我猜 bool 值意味着 perl 看到了字符串。
$ cat /tmp/casper_reports | perl -nle 'print /'.*'/'
1
1
1
1
1
但是,当我尝试用括号捕获它时,它会抛出一个错误
$ cat /tmp/boobomb | perl -nle 'print /'(.*)'/'
-bash: syntax error near unexpected token `('
请您参考如下方法:
在 Bash 和 Zsh shell 中,您可以使用 $''
允许转义单引号。
echo $'I wouldn\'t'
这也使 $1
不被 bash 解释并可用于 perl。
perl -nle $'print $1 if /\'(.*)\'/' < /tmp/boobomb
另见 https://unix.stackexchange.com/questions/30903/how-to-escape-quotes-in-shell