使用Perl Unix命令转义序列

iDe*_*Dev 0 unix linux git perl escaping

我试图从perl中执行以下unix命令

`git log --pretty=format:%H | grep $id | wc -l`;
Run Code Online (Sandbox Code Playgroud)

我一直在说错误

sh: -c : syntax error near unexpected token '|'
sh -c : '| wc -l'
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个错误

ike*_*ami 5

问题是你有123<NEWLINE>而不是123in $id,所以你将以下内容传递给shell:

git log --pretty=format:%H | grep 123
 | wc -l
Run Code Online (Sandbox Code Playgroud)

代替

git log --pretty=format:%H | grep 123 | wc -l
Run Code Online (Sandbox Code Playgroud)

修复该值$id.最好的方法可能是通过chomp.