【问题标题】:Command line argument into a shell script conversion?命令行参数转换成 shell 脚本?
【发布时间】:2017-02-27 02:32:56
【问题描述】:

我有一个命令行参数,需要将其转换为 shell 脚本。有人可以解释我怎么做吗?

如果是像下面这样简单的东西,这里如何处理大小写?

cat * |perl -ne '{chomp; print "$_\n" if ($_=~ /MAR-|-MAR/|/JAN-|-JAN/|/FEB-|-FEB/|/APR-|-APR/|/MAY-|-MAY/|/JUN-|-JUN/|/JUL-|-JUL/|/AUG-|-AUG/|/SEPT-|-SEPT/|/OCT-|-OCT/|/NOV-|-NOV/|/DEC-|-DEC/|/dec-|-dec/|/Aug-|-Aug/|/Jan-|-Jan/|/Sept-|-Sept/)|/Feb-|-Feb/|/Mar-|-Mar/|/Apr-|-Apr/|/May-|-May/|/Jun-|-Jun/|/Jul-|-Jul/|/Oct-|-Oct/|/Nov-|-Nov/}'|more

【问题讨论】:

  • 看起来您在这里有两个不同的主题。你能把它们分成不同的问题吗?
  • 您永远不必使用cat 来向 Perl 提供输入:只需将您的参数放在代码之后:perl -e'code here' *。尽管使用像 * 这样的 glob,您可能需要进行一些完整性检查以避免处理目录等。
  • 另外,你的正则表达式有一个严重的错误:/ 是你正则表达式中的一个元字符,你没有逃脱它。通常,您会收到类似Search pattern not terminated 的错误,但实际上您已意外终止了您的错误。这:$_=~ /MAR-|-MAR/|/JAN-|-JAN/ 的意思是:$_ =~ m/MAR-|-MAR/ | $_ =~ /JAN-|-JAN/ -- 带有| bitwise OR operator. 的两个表达式。

标签: linux perl shell


【解决方案1】:

要使您的测试用例不敏感,请添加i。示例:

 if ($something =~ /re/i) {

【讨论】:

    猜你喜欢
    • 2013-03-03
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 2021-02-04
    • 2010-09-07
    • 2014-04-03
    • 2021-07-20
    • 2021-08-05
    相关资源
    最近更新 更多