gpt4 book ai didi

linux - 带有两个输入文件的两个 for 循环 Linux

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:59 25 4
gpt4 key购买 nike

我在一个输入中有 20 个文件,在另一个输入中有 20 个文件。我希望执行我的命令,该命令将同时从每个输入中获取两个文件并执行命令,即对于一个输入中的每个文件,它将从第二个输入中获取相应的文件。这是我的尝试:

for f1 in zero-mam-2050-2074*.nc
do
for f2 in avm-mam-1976-2000-tasmax-*.nc
do
cdo ydayadd "$f1" "$f2" ydayadd-$file
done
done

我正在编写我希望能在这个循环中运行的单行代码。代码语法为

cdo ydayadd input_1 input_2 output

此代码一次使用一个命令运行良好。

cdo ydayadd zero-mam-2050-2074-ACCESS.nc avm-mam-1976-2000-tasmax-ACCESS.nc ydayadd-ACCESS.nc 
cdo ydayadd zero-mam-2050-2074-bcc.nc avm-mam-1976-2000-tasmax-bcc.nc ydayadd-bcc.nc
cdo ydayadd zero-mam-2050-2074-BNU.nc avm-mam-1976-2000-tasmax-BNU.nc ydayadd-BNU.nc

我希望循环运行这个模式

最佳答案

现在是一个非常不同的问题!我首先发现日期与零文件和 avm 文件不匹配。

您不需要 2 个循环,而是一个映射。 ${f1/zero-mam-2050-2074-/} 提取类似 -BNU.nc 的内容,需要将其附加到 tasmax文件和您的ydayadd-文件。

对于测试,如果您给了我们所有必要的信息,上面的代码应该可以工作。为了真正执行工作,将 echo 替换为 cdo:

for f1 in zero-mam-2050-2074-*.nc
do
ext=${f1/zero-mam-2050-2074-/}
f2=avm-mam-1976-2000-tasmax-${ext}
cdo ydayadd "$f1" "$f2" ydayadd-$ext
done

(还有另一个错误,因为我使用了 ext=${f/zer 而不是 ext=${f1/zer。)

测试:

ls -1
avm-mam-1976-2000-tasmax-ACCESS.nc
avm-mam-1976-2000-tasmax-bcc.nc
avm-mam-1976-2000-tasmax-BNU.nc
zero-mam-2050-2074-ACCESS.nc
zero-mam-2050-2074-bcc.nc
zero-mam-2050-2074-BNU.nc

alias cdo=echo
for f1 in zero-mam-2050-2074-*.nc
> do
> ext=${f1/zero-mam-2050-2074-/}
> f2=avm-mam-1976-2000-tasmax-${ext}
> cdo ydayadd "$f1" "$f2" ydayadd-$ext
> done
ydayadd zero-mam-2050-2074-ACCESS.nc avm-mam-1976-2000-tasmax-ACCESS.nc ydayadd-ACCESS.nc
ydayadd zero-mam-2050-2074-BNU.nc avm-mam-1976-2000-tasmax-BNU.nc ydayadd-BNU.nc
ydayadd zero-mam-2050-2074-bcc.nc avm-mam-1976-2000-tasmax-bcc.nc ydayadd-bcc.nc

关于linux - 带有两个输入文件的两个 for 循环 Linux,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49703934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com