我有几个逻辑 AND 命令,中间是一个 perl 命令,可以就地编辑文件。
echo before && \
perl -pe 's/foo/bar/g' -i qux && \
echo after
Run Code Online (Sandbox Code Playgroud)
如果该文件不存在,perl 将显示“无法打开 qux:没有这样的文件或目录”。但是错误代码是 0。这是一个问题,因为我不希望命令继续。换句话说,如果文件不存在,则不应打印 'after'。为什么会发生这种情况,我该如何阻止它?
您可以使用perl -pe ... < file而不是perl -pe ... file. 在这种情况下,如果文件不存在,即使不调用 perl,shell 也会发出警告。但不能与-i开关一起使用。
或者,由于您想使用该-i开关,因此您可以在使用该文件之前检查该文件是否可写。并不是说这会检查qux文件是否可写,因为仅其中之一是不够的(也许还需要检查可读性)。
[ -f qux ] && [ -w qux ] && perl -pe ... -i qux
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1050 次 |
| 最近记录: |