我正在尝试在命令中的同一文件中使用多个输入作为输出,来自我提出的这个问题
用户 Konsolebox 和所有其他人都非常有助于让我了解如何改进和操作该过程。根据他们的建议,我接受了他们的意见并尝试更改我的代码,尽管它似乎不起作用。
该代码的工作是获取时间和/或月份不同的多个项目,并将它们作为输入文件输入到 bash 命令,该命令将生成一个输出文件
提出的建议使我以这种方式更改代码:
fname2="trim"
years=({2000..2010})
months=(01 02) ## ({01..100}) should be the same
end="nc"
我一直在努力让它工作,但无论我改变什么,我都会得到同样的错误
cdo mergetime: Open failed on >@({2010})@(01<
No such file or directory
我已将 bash 脚本放在工作文件夹中,并且文件已命名trim201001.nc
,并且trim201002.nc
(通常我将有数百个具有这种格式的文件,这就是我尝试将它们自动化的原因)
我正在使用命令运行脚本./script.sh
在 konsolebox 的建议之后,我添加了shopt -s nullglob
shopt -s extglob
shopt -s nullglob
#IFS='|' eval 'pattern="${fname2}@(${years[*]})@(${months[*]}).${end}"'
IFS='|' eval 'pattern="${fname2}$years@(${months[*]}).${end}"'
echo "pattern = ${pattern}"
files=($pattern) ## pathname expansion is sorted in Bash.
cdo mergetime "${files[@]}" ofile
我认为新错误位于月份读数中,尽管我检查了我的位置,但要使用的一个文件是 02(月)和 01(月)
pattern = @(2010)@(01|02).nc
cdo mergetime: Open failed on >02).nc<
No such file or directory