如何在 c shell 中打印 3 位数字?

how can I print with 3 digits in the c shell?

我想在 c shell.

中打印 3 位数字,例如 001、002... 而不是 1、2...

但是当我使用下面的例子时,我得到的只是没有 3 位数字的数字。

所以我想知道如何将 3 位数字打印为 001 而不是 1。

如何在 c shell 中打印 3 位数字?

#!/bin/csh -f

 set j = 1
 while ( $j <= 400 )
   echo "Welcome $j times"
   @ j++
 end

结果

0

1

...

100

...

400

更新

还有一个问题。如果我想将它分配为与“printf 'Welcome %03d times' $j”本身的差异。 像这样,

 set j = 1
 set k

 while ( $j <= 400 )
   printf 'Welcome %03d times' $j
   k = printf 'Welcome %03d times' $j

   @ j++
 end

如果我想像这样将 3 位数字分配给 k 方差,则 k=003 而不是 k=3。 我在做什么?

更新2

当我 运行 下面的代码时,我得到的总是 000 而不是增加。

 set j = 1 
 while ( $j <= 500 ) 
   echo "Welcome $j times" 
 set k = `perl -e 'print (sprintf ("%03d", $j))'` 
   echo "set k= $k " 
#!/bin/csh -f

 set j = 1
 while ( $j <= 400 )
   printf 'Welcome %03d times' $j
   @ j++
 end

不确定 csh,但它应该可以工作

对于你的第一个问题,答案如 Alexandr 所写:

#!/bin/csh -f

set j = 1
while ( $j <= 400 )
printf 'Welcome %03d times' $j
@ j++
end

对于你的第二个问题,你可以这样做:

> set test = `perl -e 'print (sprintf ("%03d", 3))'`
> echo $test
003

http://www.brendangregg.com/Guess/guess.csh
为了将 vars 传递给 perl one liner,请参见下面的行
How do I best pass arguments to a Perl one-liner?