我正在尝试使用命令行参数进行算术运算,但似乎找不到任何文档来解释如何做到这一点。举个例子,如果我使用:
for i in {$1..$2}
do
echo $i
done 并调用
test.sh 1 20将生成以下输出:
{1..20} 而不是
1
2
3
..
20 发布于 2019-12-10 11:43:07
如果没有bash中带括号扩展的邪恶eval(),就无法正确完成此操作。
您可以改用seq:
for i in $(seq $1 $2); do发布于 2019-12-10 11:57:36
以下方法也适用:
declare -a ary='({'$1..$2'})'
for i in "${ary[@]}"; do
echo "$i"
done请注意,declare和eval一样是有害的。在使用之前,您需要对参数进行检查和消毒。
https://stackoverflow.com/questions/59259858
复制相似问题