0

我找到了一些相关的帖子,但似乎没有任何效果。

我想为实例 03-12 重复相同的参数 $i。我真的在尝试使用一些 nco 运算符 - 但是 printf 语句让我挂了。

#!/bin/csh
set i = 1
while ($i < 2)
    `printf O3_BDBP_1979ghg.cam.h0.00{03,04,05,06,07,08,09,10,11,12}-%02d.nc $i`
    @ i = $i + 1
end

输出是 - 所以它得到它 03 但不是其余的。

printf: O3_BDBP_1979ghg.cam.h0.0004-%02d.nc: expected a numeric value

我也试过这个说法(根据其他帖子)

`printf O3_BDBP_1979ghg.cam.h0.00{03,04,05,06,07,08,09,10,11,12}-%1$02d.nc $i`

任何建议将不胜感激!

4

1 回答 1

0

大括号为printf命令产生多个参数;只有第一个被视为格式字符串,其余的被视为%1第一个的参数。换句话说,你得到

printf O3_BDBP_1979ghg.cam.h0.0003-%02d.nc O3_BDBP_1979ghg.cam.h0.0004-%02d.nc ... O3_BDBP_1979ghg.cam.h0.0012-%02d.nc $i

作为有效的命令行。尝试使用嵌套循环:

#!/bin/csh
set i = 1
while ($i < 2)
    foreach j ( {03,04,05,06,07,08,09,10,11,12} )
        printf O3_BDBP_1979ghg.cam.h0.00%02-%02d.nc $j $i
    end
    @ i = $i + 1
end
于 2013-09-16T17:32:20.673 回答