Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用Seq和Variable遍历列表_Bash_Shell_Syntax_Seq - Fatal编程技术网

Bash 使用Seq和Variable遍历列表

Bash 使用Seq和Variable遍历列表,bash,shell,syntax,seq,Bash,Shell,Syntax,Seq,我试图循环遍历一个整数列表,开始时是这样的: start=000 for i in $(seq -w $start 48 006); 但是,当我尝试上面的代码时,循环似乎循环了一次,然后退出 我需要修改什么?前导零需要保留请尝试以下操作 start=0 diff=6 for i in $(seq $start $diff 48); do printf '%03d\n' $i done 输出如下 000 006 012 018 024 030 036 042 048 OP的试用代码中存在

我试图循环遍历一个整数列表,开始时是这样的:

start=000
for i in $(seq -w $start 48 006);
但是,当我尝试上面的代码时,循环似乎循环了一次,然后退出


我需要修改什么?前导零需要保留

请尝试以下操作

start=0
diff=6
for i in $(seq $start $diff 48);
do
  printf '%03d\n' $i
done
输出如下

000
006
012
018
024
030
036
042
048
OP的试用代码中存在问题: 我相信你在seq中给出了错误的语法,它应该是startpoint,然后是increment\u number,然后是endpoint,例如->seqstart\u point increment\u point。因为您错误地给出了它们,所以它只在循环中打印一次

在您的尝试中,它将起点设为0,应一直运行到6,差值为48,这是不可能的,因此它只打印第一个整数,这是足够公平的

编辑:根据@Cyrus sir的评论,在此处添加BASH内置解决方案,但不使用seq

seq的输入包括开始、递增和结束


您已经用finish反转了增量:seq-w$start 48 006表示从零开始,增量48表示从6结束。简单的修复是seq-w$start 6 48。注:不需要006,只需要6,因为seq将使数字的宽度相等于两个位置

为什么要使用seq?使用内置数学运算符而不分叉外部processes@hallettwx:带有bash内置命令:对于i=0;我
for ((i=0; i<=48; i=i+6)); do printf '%03d\n' $i; done