• ARGV数组的作用


      今天在开发Perl脚本的时候遇到了一个问题:qualcomm给出的samples中的代码都用ARGV数组的元素个数来进行判断,代码如下:

    sub ParseArguments
    {
       # Assume failure
       my $RC = false;
       my $Txt = "";
       my $Help =
          "Syntax: Perl grep_isf.pl <Input_ISF_File.isf> <string_to_be_searched> 
    "
        . "Eg:     Perl grep_isf.pl s1.isf "MC_RESET|jammer in max bin" 
    ";
    
       if ($#ARGV < 0)
       {
          print "
    $Help
    ";
          return $RC;
       }
    
       my $ISFFileName = $ARGV[0];
       if ($ISFFileName eq "")
       {
          $Txt = "Invalid ISF file name
    
    " . $Help;
          print "
    $Txt";
    
          return $RC;
       }
    
       $ISFAbsolutePath = GetPathFromScript();
       if ($ISFAbsolutePath eq "")
       {
          $Txt = "Invalid ISF file name
    
    " . $Help;
          print "
    $Txt";
    
          return $RC;
       }
       else
       {
          $ISFAbsolutePath .= $ISFFileName;
       }
    
       $SearchString = $ARGV[1];
       if ($SearchString eq "")
       {
          $Txt = "Invalid Search String
    
    " . $Help;
          print "
    $Txt";
    
          return $RC;
       }
    
       # Success
       $RC = true;
       return $RC;
    }

    但是穷尽了一生也没有找到ARGV的声明,这时候郭宏跑过来和我抱怨这个东西运行不了,我就随手查了查,才发现别有洞天。

    ARGV其实是主函数默认的两个参数之一,数组中存储的是指令的详细内容。

    举个例子: 我们写好了hello.exe 一般都是直接运行,没有添加任何的参数。但是作为一个合格的EXE,它是可以通过命令行来添加参数的,比如我们可以执行:hello.exe a b c d e

    这样ARGV数组中的存储内容如下:

                   argv[0] = hello.exe;

        argv[1] = a;

        argv[2] = b;

        argv[3] = c;

        argv[4] = d;

        argv[5] = e;

     所以我觉得这个automation 脚本和QXDM之前的关系应该是通过命令行的参数和命令联系起来的。下午再想想,吃饭去

    大多数想法要么平庸,要么更糟糕,这很大程度上因为绝妙的想法难得一见,而且他们还要在我们身边这个充斥了各种恶俗的所谓常识的环境中孕育生长。
  • 相关阅读:
    node 随手记录
    node 调试器
    GIT
    原型
    ES6 (11):Class
    ES6 (10):Generator
    集合框架02
    集合框架01
    实现各种尺寸的图片裁剪成圆形头像
    鼠标移上显示 ( 自定义内容 ) 弹出框
  • 原文地址:https://www.cnblogs.com/linux0537/p/7267734.html
Copyright © 2020-2023  润新知