Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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
Linux 使用两个输入执行for循环_Linux_Loops - Fatal编程技术网

Linux 使用两个输入执行for循环

Linux 使用两个输入执行for循环,linux,loops,Linux,Loops,我使用for循环在linux中执行我的命令。我在一个输入中有20个文件,在另一个输入中有20个文件 for f1 in zero-mam-2050-2074*.nc; do; f2={avm-mam-1976-2000-tasmax-*.nc}; command $f1 $f2 output; done 它没有读取第二个输入。分号: for f1 in zero-mam-2050-2074*.nc; do; f2={avm-mam-1976-2000-tasmax-*.nc}; command

我使用for循环在linux中执行我的命令。我在一个输入中有20个文件,在另一个输入中有20个文件

for f1 in zero-mam-2050-2074*.nc;
do;
f2={avm-mam-1976-2000-tasmax-*.nc};
command $f1 $f2 output;
done
它没有读取第二个输入。

分号:

for f1 in zero-mam-2050-2074*.nc;
do;
f2={avm-mam-1976-2000-tasmax-*.nc};
command $f1 $f2 output;
done
这些都是无用的

for f1 in zero-mam-2050-2074*.nc
do
  f2={avm-mam-1976-2000-tasmax-*.nc}
  command $f1 $f2 output
done
第三行是可疑的。你想做什么?创建一个数组

for f1 in zero-mam-2050-2074*.nc
do
  f2=(avm-mam-1976-2000-tasmax-*.nc)
  command "$f1" "${f2[@]}" output
done
要循环,假设20个文件,匹配模式f1,并使用20个文件匹配f2调用每个文件:

for f1 in zero-mam-2050-2074*.nc
do
  f2=avm-mam-1976-2000-tasmax-*.nc
  command "$f1" $f2 output
done
这将导致20次命令调用,在f1中滚动,但每次调用的所有文件都与f2匹配

对于20x20匹配,您将使用第二个循环。 安装到我的硬盘上的文件模式:

for f1 in file1*; do  f2=sample.*;  echo command "$f1" $f2* output; done
command file1 sample.conf sample.go sample.log sample.xml output
command file1.txt sample.conf sample.go sample.log sample.xml output
command file1nums sample.conf sample.go sample.log sample.xml output

当然,您可以使用您的模式,并在测试后删除回声。

谢谢您的帮助。我已经运行了您上次评论中的代码。它在>avm-mam-1976-2000-tasmax-*.nc<上给出了一个错误cdo ydayadd:Open失败。我确实从每个输入中使用了一个文件执行了这个命令,它工作正常,但我不知道如何在循环中运行它。循环没有从第二个输入中获取值,即从f2=avm-mam-1976-2000-tasmax-*。ncSo
ls avm-mam-1976-2000-tasmax-*.nc
ls$f2
显示了什么?也许是打字错误?错误的目录?文件名是否包含空格?ls avm-mam-1976-2000-tasmax-*.nc显示输入文件,基本上是20个输入模型和$f2。我曾经为$f1中的每个对应输入文件获取这些输入文件。我将编写该命令,以帮助解释使用两个输入执行单个命令。命令是:cdo ydayadd zero-mam-2025-2049-tasmax-ACCESS1-0-RCP85-2006-2099_-Pak_0.25.nc avm-mam-1976-2000-tasmax-ACCESS1-0-Historical-1976-2005_-Pak_0.25.nc输出文件。单个命令工作正常。我希望在循环中执行它,从输入1获取20个文件,同时从输入2获取20个文件并执行命令。