"Unprocessed input" 在带变量的循环中使用 `cdo` 时出错

"Unprocessed input" error using `cdo` in loop with variable

我正在尝试在带有变量的 shell 脚本中嵌入 cdo 行。作为命令行,它可以工作,但不能在脚本中使用。这是 cdo 行:

cdo -expr,'T_mask=((T > 200 ))' file_in.nc file_out.nc

在 shell 脚本中,我想 运行 它用于三个不同的温度阈值,例如 200、250、300。

这是代码:

T_string='T_mask=((T > '
fileA='file_in.nc'
fileB='file_out.nc'
for T_var in 200 250 300; do
    cdo_string="'$T_string$T_var))'"
    cdo  -expr,$cdo_string  $fileA $fileB
done

我收到以下错误:

cdo (Abort): Unprocessed Input, could not process all Operators/Files

我错过了什么? 连字符设置正确吗?

$T_string 变量似乎没有必要。使用类似命名的 shell 变量时,请始终使用花括号。

试试这个:

fileA='file_in.nc'
fileB='file_out.nc'
for T_var in 200 250 300; do
    cdo  -expr,'T_mask=((T > '"${T_var}"'))'  "${fileA}" "${fileB}"
done