linux–$中的命令行perl错误值不正确?

linux–$中的命令行perl错误值不正确?,第1张

概述我使用命令行perl在文件中执行就地替换.这是代码:(注意带sudo的root perm)sudo perl -i -pe 's/foo/bar/' config.txt 如果成功,'echo $?'返回0.现在我使用chattr这样的文件使文件不可写,即使对于root:sudo chattr +i config.txt 我运行相同的perl命令,它失败并出

我使用命令行perl在文件中执行就地替换.这是代码:(注意带sudo的root perm)

sudo perl -i -pe "s/foo/bar/" config.txt

如果成功,’echo $?’返回0.现在我使用chattr这样的文件使文件不可写,即使对于root:

sudo chattr +i config.txt

我运行相同的perl命令,它失败并出现此错误

Can’t remove config.txt: Operation not permitted,skipPing file.

哪个好.但是,’echo $?’在这种情况下仍然返回0.为什么会这样?它不应该返回表示错误的非零值吗?最佳答案问题是Perl没有为此条件返回非零退出状态(sudo传递给它的命令的退出状态),这有点令人烦恼.您可以通过识别如果文件无法重命名并且使用标志处理它而永远不会输入行读取循环来解决此问题:

sudo perl -i -ne 's/foo/bar/; print; $wrk = 1; }{ $wrk or exit 1' config.txt

爱斯基摩人问候(或蝴蝶)“operator”} {在某种程度上引入了END块;当文件的循环读取行结束时执行它之后会发生什么.其工作方式描述为here.

需要注意的是,如果config.txt为空,这也会报告错误.如果有点HackIEr方式是使用特殊$更短.行计数器变量用于相同的目的:

sudo perl -i -ne 's/foo/bar/; print; }{ $. or exit 1' config.txt
总结

以上是内存溢出为你收集整理的linux – $中的命令行perl错误值不正确?全部内容,希望文章能够帮你解决linux – $中的命令行perl错误值不正确?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1050266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存