我发现了一些相关帖子,但似乎没什么用。
我想为实例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`
任何建议都将不胜感激!
答案 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