我试图做这样的事情在shell脚本:对于shell脚本
STEP=5
LIST=[1-$STEP]
for i in $LIST
echo $i
done
我期望的输出是:
1 2 3 4 5
我大概有前(如看到这种用法[AZ ]),但我不记得正确的语法。感谢您的帮助!
我试图做这样的事情在shell脚本:对于shell脚本
STEP=5
LIST=[1-$STEP]
for i in $LIST
echo $i
done
我期望的输出是:
1 2 3 4 5
我大概有前(如看到这种用法[AZ ]),但我不记得正确的语法。感谢您的帮助!
试试这个。请注意,您使用包含LF的echo命令。使用echo -n以获取在同一行上输出,如图
STEP=5
for i in `seq 1 $STEP`; do
echo $i
done
请注意'seq'不是POSIX实用程序,可能无法使用。不应该使用'echo -n';使用'printf'来代替,它可以轻松地抑制换行符。 – Jens 2013-05-22 09:32:20
假设这是bash下
$ echo {1..5}
1 2 3 4 5
$ STEP=5
$ echo {1..$STEP}
{1..5}
$ eval echo {1..$STEP}
1 2 3 4 5
这是很棒的,直到你在一个名为“1”的文件的目录中运行它,因为某些骨头类型的重定向错误。然后{1..5}扩展为“1”,并花费*小时*尝试诊断问题。 :) 除非您使用noglob,因为您之前完成了此操作,并且再也不想再遇到这个问题。 – dannysauer 2012-04-08 03:16:57
@dannysauer Brace扩展不是文件名称通配符。 'echo {1..5}'输出'1 2 3 4 5'是否存在名为'1'的文件。你用'echo [1-5]'来混淆这个吗? – Jens 2013-05-22 09:28:21
@dannysauer,自己验证:记录扩展的bash序列:http://www.gnu.org/software/bash/manual/bashref.html#Shell-Expansions – 2013-05-22 14:41:48
像这样也许:http://stackoverflow.com/questions/169511/how-do -i-iterate-a-range-of-numbers-in-bash – minopret 2012-02-24 05:34:09