首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用结构在Bash中嵌套for循环

使用结构在Bash中嵌套for循环
EN

Stack Overflow用户
提问于 2016-11-08 12:28:25
回答 2查看 972关注 0票数 0

我使用类的结构在bash中运行嵌套的for循环。我已经写好了脚本,并且可以工作,但是我不明白为什么当我已经声明我想要K1-5的时候,为什么在结构-K之后的花括号中需要字符(在本例中是粗体的)K?这就是我的资料-

代码语言:javascript
复制
for K in {1..5}
do
    for run in {1..3}
    do
        echo "K = ${K}; run = ${run}"
        structure -K **${K}** -o K_${K}_run_${run}.txt
    done
done
EN

回答 2

Stack Overflow用户

发布于 2016-11-08 12:32:53

在您的脚本中,变量扩展需要用${}分隔的唯一位置是:

代码语言:javascript
复制
K_${K}_run_${run}.txt

因为:

  • 有效的变量组成字符都是字母、数字和下划线,在正则表达式中:[A-Za-z0-9_]
  • So如果下面的字符也是有效的变量组成字符,则需要分隔一个变量扩展

K_${K}_run_${run}.txt

  • -${K}需要${},因为后面跟着_
  • ${run}不需要严格地分隔,因为后面跟着.,这不是有效的变量构成字符
票数 1
EN

Stack Overflow用户

发布于 2016-11-08 12:33:31

外壳变量$K和程序选项-K是两个不同的东西。您可以使用任何变量名

代码语言:javascript
复制
for m in {1..5}
do
    for run in {1..3}
    do
        echo "K = ${m}; run = ${run}"
        structure -K ${m} -o K_${m}_run_${run}.txt
    done
done

程序不会从同名的外壳变量中推断缺少的-K选项的值。

代码语言:javascript
复制
for K in {1..5}
do
    for run in {1..3}
    do
        echo "K = ${K}; run = ${run}"
        # Wrong: does not assume -K ${K}
        structure -o K_${K}_run_${run}.txt
    done
done
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40478972

复制
相关文章

相似问题

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