ARGV数组的作用

Posted 南瓜小屋

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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> \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数组的作用的主要内容,如果未能解决你的问题,请参考以下文章

[linux][c/c++]代码片段01

当指针指向数组时,为啥 operator(*) 的值不起作用?

char** argv作为字符串数组传递

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

比较 argv[1][i] 数组 C++ [关闭]