Bash 如果找到字符串,则使用1退出perl

Bash 如果找到字符串,则使用1退出perl,bash,perl,Bash,Perl,我需要一个bash命令(perl?),如果在文本文件中发现非ASCII字符,它将输出非零退出代码 以下是我目前掌握的情况: perl -nle 'print "$." if m/[\x80-\xFF]/' file_that_has_non_ascii_characters.txt 这将打印出在其上找到非ASCII字符的每一行。我尝试了一个带有exit 1的变体,但它似乎不起作用: ➜ perl -nle 'exit 1 if m/[\x80-\xFF]/' file_that_has_non

我需要一个bash命令(perl?),如果在文本文件中发现非ASCII字符,它将输出非零退出代码

以下是我目前掌握的情况:

perl -nle 'print "$." if m/[\x80-\xFF]/' file_that_has_non_ascii_characters.txt
这将打印出在其上找到非ASCII字符的每一行。我尝试了一个带有
exit 1
的变体,但它似乎不起作用:

➜ perl -nle 'exit 1 if m/[\x80-\xFF]/' file_that_has_non_ascii_characters.txt
➜ echo $!
0

怎么做?

您应该使用
$?
而不是
$

:扩展到最近执行的后台(异步)命令的进程ID

:扩展到最近执行的前台管道的退出状态


退出代码位于
bash
中的
$?
中。您为什么不查看
$?
?请参阅“此问题是由一个无法再复制的问题或一个简单的印刷错误引起的。虽然此处可能有类似的问题,但此问题的解决方式不太可能帮助未来的读者。”