这是myscript.sh
#!/bin/bash for i in {1..$1}; do echo $1 $i; done
如果我运行myscript.sh 3的输出是
3 {1..3}
代替
3 1 3 2 3 3
显然,$ 3包含正确的值,所以为什么我不在{1 .. $ 1}中的行为与直接在{1..3}中为i写的相同?
您应该使用C风格的for循环来实现这一点:
原文链接:https://www.f2er.com/bash/387537.htmlfor ((i=1; i<=$1; i++)); do echo $i done
这避免了外部命令和讨厌的eval语句。