Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在shell脚本中读取excel文件_Shell - Fatal编程技术网

如何在shell脚本中读取excel文件

如何在shell脚本中读取excel文件,shell,Shell,我有一个excel文件,其中包含以下值。我想从excel文件中读取这些值,并通过这些值来执行测试 用户1=2 循环1=1 users2=1 循环2=1 您能帮助我如何实现这一点吗?使用linux,您有几种选择,但如果不使用脚本语言,并且很可能安装额外的模块,则没有一种选择 使用Perl,您可以读取Excel文件,即使用此模块: 使用Python时,您可能希望使用: 使用Ruby,您可以: 所以无论你喜欢什么,都有工具可以帮助你 CSV格式 如果您可以以CSV(逗号分隔值)文件的形式获取数据

我有一个excel文件,其中包含以下值。我想从excel文件中读取这些值,并通过这些值来执行测试

用户1=2

循环1=1

users2=1

循环2=1


您能帮助我如何实现这一点吗?

使用linux,您有几种选择,但如果不使用脚本语言,并且很可能安装额外的模块,则没有一种选择

使用Perl,您可以读取Excel文件,即使用此模块:

使用Python时,您可能希望使用:

使用Ruby,您可以:

所以无论你喜欢什么,都有工具可以帮助你

CSV格式

如果您可以以CSV(逗号分隔值)文件的形式获取数据,那么就更容易了,因为不需要额外的模块

例如,在Perl中,可以使用Split函数。现在我大致了解了您的CSV文件的格式,让我给您一个简单的示例:

#!/usr/bin/perl
use strict;
use warnings;

# put full path to your csv file here
my $file = "/Users/daniel/dev/perl/test.csv";

# open file and read data
open(my $data, '<', $file) or die "Could not read '$file' $!\n";

# loop through all lines of data
while (my $line = <$data>) {

  # one line
  chomp $line;

  # split fields from line by comma
  my @fields = split "," , $line;

  # get size of split array
  my $size = $#fields + 1;

  # loop through all fields in array
  for (my $i=0; $i < $size; $i++) {

    # first element should be user
    my $user = $fields[$i];
    print "User is $user";

    # now check if there is another field following
    if (++$i < $size) {

      # second field should be loop
      my $loop = $fields[$i];
      print ", Loop is $loop";

      # now here you can call your command
      # i used "echo" as test, replace it with whatever
      system("echo", $user, $loop);

    } else {
      # got only user but no loop
      print "NO LOOP FOR USER?";
    }
    print "\n";
  }
}
#/usr/bin/perl
严格使用;
使用警告;
#在此处放置csv文件的完整路径
my$file=“/Users/daniel/dev/perl/test.csv”;
#打开文件并读取数据

打开(我的$data,'什么操作系统?还可以将excel另存为CSV吗?一个单元格中真的有“users1=2”吗?linux。我使用的是shell scriptPerl,它有几个模块用于读取和/或操作excel文件。即使您想将产品的大部分保存为一个(非Perl)shell脚本,您可以让一个Perl子脚本为您检索值。不,我只想从文件中读取它,并将其传递给变量,如users1=?等。Excel的哪个版本生成了该文件?如果您有CSV(逗号分隔的值)格式化,那就更容易了。但是CSV不是Excel!!!Excel可以读写CSV,但是如果你已经有数据作为CSV存在,那么请在这里发布数据,这样其他人可以提供示例代码,并将你的问题更改为CSV,这样就不会误导你通常不需要额外的模块来读取CSV,这可以通过简单的本机函数来完成离子可以形成Perl、Python或Ruby@user197501为您添加了一个简单的CSV示例我可以使用其中任何一个,这就是为什么我问CSV是否容易使用,然后我可以使用该数据,该数据将与我在问题用户1,1 loop1,1 Users2,2 loop2,1中描述的数据相同然后在shell脚本中,我将这些值传递给变量以执行测试,所以我只想读取一个文件,然后在脚本中传递User1、loop1、Users2、loop2值。