码迷,mamicode.com
首页 > 编程语言 > 详细

ARGV数组的作用

时间:2017-08-01 14:26:16      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:syntax   [1]   qualcomm   问题   例子   $#   logs   turn   return   

  今天在开发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> \n"
    . "Eg:     Perl grep_isf.pl s1.isf \"MC_RESET|jammer in max bin\" \n";

   if ($#ARGV < 0)
   {
      print "\n$Help\n";
      return $RC;
   }

   my $ISFFileName = $ARGV[0];
   if ($ISFFileName eq "")
   {
      $Txt = "Invalid ISF file name\n\n" . $Help;
      print "\n$Txt";

      return $RC;
   }

   $ISFAbsolutePath = GetPathFromScript();
   if ($ISFAbsolutePath eq "")
   {
      $Txt = "Invalid ISF file name\n\n" . $Help;
      print "\n$Txt";

      return $RC;
   }
   else
   {
      $ISFAbsolutePath .= $ISFFileName;
   }

   $SearchString = $ARGV[1];
   if ($SearchString eq "")
   {
      $Txt = "Invalid Search String\n\n" . $Help;
      print "\n$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之前的关系应该是通过命令行的参数和命令联系起来的。下午再想想,吃饭去

ARGV数组的作用

标签:syntax   [1]   qualcomm   问题   例子   $#   logs   turn   return   

原文地址:http://www.cnblogs.com/linux0537/p/7267734.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!