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
Bash 是否允许循环文件执行ncdump?_Bash_Shell_Netcdf - Fatal编程技术网

Bash 是否允许循环文件执行ncdump?

Bash 是否允许循环文件执行ncdump?,bash,shell,netcdf,Bash,Shell,Netcdf,似乎找不到可靠的类似问题。基本上,我只是尝试对多个文件执行一个操作,但我很难处理for循环。我想一次转储多个文件,并将输出存储在单独的文件中。这就是我目前所拥有的 #!/bin/bash date='20160503' dump1Dir=/server1/applications/VAL/gran_files cd $dump1Dir filelist=`ls *s$date*` for i in $filelist do ncdump $filelist > dumpfile[i

似乎找不到可靠的类似问题。基本上,我只是尝试对多个文件执行一个操作,但我很难处理for循环。我想一次转储多个文件,并将输出存储在单独的文件中。这就是我目前所拥有的

#!/bin/bash

date='20160503'

dump1Dir=/server1/applications/VAL/gran_files

cd $dump1Dir
filelist=`ls *s$date*`

for i in $filelist do
ncdump $filelist > dumpfile[i]
done

我认为你想要的是:

for file in *s$date*.nc; do ncdump "$file" > "${file%.nc}.cdf"; done
但这包括一系列假设

它将做的是:

  • 查找名称以扩展名
    .nc
    结尾的所有文件,并包含一个
    s
    ,后跟变量
    $date
  • 对于每个这样的文件,使用
    ncdump
    创建一个同名文件,将扩展名从
    nc
    更改为
    cdf

    • 我认为你想要的是:

      for file in *s$date*.nc; do ncdump "$file" > "${file%.nc}.cdf"; done
      
      但这包括一系列假设

      它将做的是:

      • 查找名称以扩展名
        .nc
        结尾的所有文件,并包含一个
        s
        ,后跟变量
        $date
      • 对于每个这样的文件,使用
        ncdump
        创建一个同名文件,将扩展名从
        nc
        更改为
        cdf
      这也应该可以工作(假设源文件扩展名为.nc,输出使用的是.cdf)

      这也应该可以工作(假设源文件扩展名为.nc,输出使用的是.cdf)


      你写的东西根本不清楚你到底想做什么。您可以尝试使用简洁的解释进行解释,例如“对于名称与模式匹配的每个文件,我想使用ncdump创建一个名为…”的可读文件。示例也不会有什么坏处。我想对几百个文件执行“ncdump”命令,并将输出存储在单独的文本文件中,因此output1.txt、output2.txt、,等等我了解ncdump的功能,我尝试在数百个文件上执行它,而不必手动ncdump每个文件。我知道你想要一个循环。但是我不知道你想把输出文件命名为什么,也不知道你想把它们写在哪里,因为
      dumpfile[I]
      毫无意义。所以我的回答有几个假设。我想把输出文件命名为一些通用的名称,比如“dumpfile1”、“dumpfile2”等等,这样我就知道该文件是ncdump的输出结果。[i]应该是一个交互,比如1,2,3,4,5等等。我对for循环和语法感到非常困惑,希望这能澄清问题。不管输出文件名是什么,你回答这个问题的结果对我来说都是有效的。从你写的内容来看,你实际上想做什么根本不清楚。您可以尝试使用简洁的解释进行解释,例如“对于名称与模式匹配的每个文件,我想使用ncdump创建一个名为…”的可读文件。示例也不会有什么坏处。我想对几百个文件执行“ncdump”命令,并将输出存储在单独的文本文件中,因此output1.txt、output2.txt、,等等我了解ncdump的功能,我尝试在数百个文件上执行它,而不必手动ncdump每个文件。我知道你想要一个循环。但是我不知道你想把输出文件命名为什么,也不知道你想把它们写在哪里,因为
      dumpfile[I]
      毫无意义。所以我的回答有几个假设。我想把输出文件命名为一些通用的名称,比如“dumpfile1”、“dumpfile2”等等,这样我就知道该文件是ncdump的输出结果。[i]应该是一个交互,比如1,2,3,4,5等等。我对for循环和语法感到非常困惑,希望这能澄清问题。无论输出文件名如何,您回答问题的结果都对我有效。这正是我所寻找的,非常有效。这正是我所寻找的,非常有效。