【问题标题】:Why is $1 not working in my bash for loop? [duplicate]为什么 $1 在我的 bash for 循环中不起作用? [复制]
【发布时间】:2020-11-05 01:08:27
【问题描述】:
#!/bin/bash
for i in {1..$1}; do echo 'for the love of god please work'; done

但是

$ ./xgen2 5

不打印“看在上帝的份上,请工作”5 次,而是打印一次

请“看在上帝的份上-”请帮忙

【问题讨论】:

    标签: bash syntax


    【解决方案1】:

    你不需要评估

    #! /bin/bash
    
    for _ in $(seq $1)
    do
        echo 'for the love of god please work'
    done
    

    【讨论】:

      【解决方案2】:

      试试

      for i in $(eval echo {1..$1}); do echo 'for the love of god please work'; done

      这将使用 eval 评估 $1,然后利用该值。

      编辑: 如果您不想评估,另一种选择是: for i in {$(seq 1 $1)}; do echo 'for the love of god please work'; done

      【讨论】:

      • 我想补充一点,由于各种原因,使用 eval 并不是最好的解决方案,另一种创建范围的方法是这样的:for i in $(eval echo {1..$1}); do echo 'for the love of god please work'; done
      猜你喜欢
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 2022-08-19
      • 2010-10-17
      • 1970-01-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多