【问题标题】:While loop creating multiply variables with counterWhile循环使用计数器创建乘法变量
【发布时间】:2016-07-27 08:39:36
【问题描述】:
#!/bin/bash

n=1
while (( $n <= 5 ))
do
  num$n=`echo "$n"`
  n=$(( n+1 ))

done
echo "$num1"

好的,所以我要做的是创建一个 while 循环,该循环将创建变量并在这种情况下将一些内容放入其中,它只是 n 的值,但我无法让它这样做!

所以基本上它会创建num1、num2、num3等等

echo "$num1"
echo "$num2"
echo "$num3"

应该显示

1
2
3

但我不断收到错误,我是否在这里遗漏了什么,因为这样做不应该是疯狂的......

【问题讨论】:

    标签: bash variables unix while-loop


    【解决方案1】:

    试试

    #!/bin/bash
    
        n=1
        while (( $n <= 5 ))
        do
          eval num$n=`echo "$n"`
          n=$(( n+1 ))
    
        done
        echo "$num1"
        echo "$num2"
        echo "$num3"
    

    这里的问题是 bash 试图将 num$n 评估为一个命令,它不存在,所以报错。

    【讨论】:

    • 完美,我知道这将是一件小事,忘记了所有关于 eval 很棒的工作!
    • 所以最后一件事无论如何都要在 while 循环中回显它,就像这个 eval echo "$num$n" 打印 1 2 3 等?
    【解决方案2】:

    不要像这样动态创建带编号的变量名;使用数组。

    n=1
    while (( $n <= 5 )); do
        nums[$n]=$n  # No need to execute $(echo ...)
        n=$((n+1))
    done
    
    echo "${num[1]}"
    echo "${num[2]}"
    echo "${num[3]}"
    

    【讨论】:

    • 动态创建变量有错吗??还是使用数组只是更好的做法?
    猜你喜欢
    • 2018-12-13
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 2023-02-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    相关资源
    最近更新 更多