首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在循环shell中使用命令行参数

问在循环shell中使用命令行参数
EN

Stack Overflow用户
提问于 2019-12-10 11:39:16
回答 2查看 44关注 0票数 0

我正在尝试使用命令行参数进行算术运算,但似乎找不到任何文档来解释如何做到这一点。举个例子,如果我使用:

代码语言:javascript
复制
for i in {$1..$2}
do 
echo $i 
done 

并调用

代码语言:javascript
复制
test.sh 1 20

将生成以下输出:

代码语言:javascript
复制
{1..20} 

而不是

代码语言:javascript
复制
1
2
3
.. 
20 
EN

回答 2

Stack Overflow用户

发布于 2019-12-10 11:43:07

如果没有bash中带括号扩展的邪恶eval(),就无法正确完成此操作。

您可以改用seq:

代码语言:javascript
复制
for i in $(seq $1 $2); do
票数 0
EN

Stack Overflow用户

发布于 2019-12-10 11:57:36

以下方法也适用:

代码语言:javascript
复制
declare -a ary='({'$1..$2'})'
for i in "${ary[@]}"; do
    echo "$i"
done

请注意,declare和eval一样是有害的。在使用之前,您需要对参数进行检查和消毒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59259858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档