我习惯使用bash的以下功能:
for i in ${1..23} ; do echo $i ; done
这不概括。例如,将23
替换为偶数$p
不起作用。正如文档所说,这是一个纯粹的语法特征。
你会用什么替换它?
注意:当然,这可以使用while和辅助变量来完成,但这不是我正在寻找的,即使它有效。我实际上没有回到这一点。
答案 0 :(得分:3)
你可以使用seq工具来达到效果,我不知道你的用例是否合适
~$ P=3 && for i in `seq 1 $P`; do echo $i; done
1
2
3
或litb的建议
~$ P=3 && for ((i=1;i<=$P;i++)); do echo $i; done
1
2
3
答案 1 :(得分:1)
如果有可用的话,seq命令可以执行类似的操作。那么你的例子可能是:
p=23
for i in `seq 1 $p`
do
echo $i
done
答案 2 :(得分:1)
在linux上,有一个seq
命令(不幸的是它在OS X中缺失)。
#!/bin/bash
p=23
for i in `seq 1 $p`;
do
echo $i
done
OS X解决方法:http://scruss.com/blog/2008/02/08/seq-for-os-x/comment-page-1/
答案 3 :(得分:1)
$ p=18
$ a='{1..$p}'
$ for num in $( eval echo $(eval echo $a) ); do echo $num; done