【问题标题】:How to set array total elements in for loop如何在for循环中设置数组总元素
【发布时间】:2019-08-15 10:28:52
【问题描述】:

我有以下代码:

#!/bin/bash

SECTION[1]="900px"
PATH[1]="/path/to/folder"

SECTION[2]="1080px"
PATH[2]="/patj/to/folder2"

SECTION[3]="3000px"
PATH[3]="/patj/to/folder3"

for i in {1..3}
do
    echo "${SECTION[$i]}"
    echo "${PATH[$i]}"
done

如何让 for 循环遍历节数?

我试过了:

for i in {1.."${#SECTION[@]}"}

但是我得到一个操作数预期的错误。

【问题讨论】:

  • 如果我只使用内置命令,则适用于 bash 4.3.48。这可能会有所帮助:linfo.org/path_env_var.html
  • 我应该提到我在使用macos,我认为bash默认bash版本是3.2。

标签: arrays bash loops


【解决方案1】:

你可以使用 C 中的 for 循环语法

for ((i=1;i <= ${#SECTION[@]};i++))
do 
    echo "${SECTION[$i]}"
    echo "${PATH[$i]}" 
done

seq

for i in $(seq ${#SECTION[@]})
do 
    echo "${SECTION[$i]}"
    echo "${PATH[$i]}" 
done

【讨论】:

  • 那个 seq 示例看起来更加优雅 - 非常感谢。喜欢这个地方:-)
  • seq 1 根据我的测试大约快 20-30%,但它需要 seq 命令可用。
猜你喜欢
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 2021-07-20
  • 2011-02-20
  • 1970-01-01
  • 2018-05-24
  • 2020-03-20
  • 2019-01-23
相关资源
最近更新 更多