重复printf参数

时间:2013-09-16 15:44:07

标签: printf csh

我发现了一些相关帖子,但似乎没什么用。

我想为实例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`

任何建议都将不胜感激!

1 个答案:

答案 0 :(得分: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