【问题标题】:Bash function, array howto?Bash函数,数组如何?
【发布时间】:2013-04-30 07:13:57
【问题描述】:

我正在努力解决 Bash 数组的问题,特别是我有这个函数,我需要加载一个数组;我写的是这样的:

function list_files() { for f in *; do [[ -e $f ]] || continue done }

function list_array() {

    array=list_files
    number=0

    for items in "${array[@]}"
    do
            let "number +=1"
            echo -e "\033[1m$number\033[0m) $items"
            tput sgr0
            let "number -=$(echo "${#array[*]}")"
    done
}

这里的问题是该函数只工作一次,但是我需要在脚本中运行几次。我不确定如何去做。每次调用函数时我都必须清空并重新加载数组,或者我必须在函数参数中提供不同的数组名称(list_array myarrayname 而不是 list_array)。但是我不知道如何完成这些任务,或者它们是否可能/可行。

非常欢迎任何帮助!

【问题讨论】:

  • “该功能只工作一次”?!它根本不起作用。您的代码中存在语法错误。
  • never parse the output of ls 使用文件通配符
  • 你认为if $array 会做什么?

标签: arrays bash function


【解决方案1】:

有点不清楚您要达到的目标;也许你可以从下面找到一些灵感:

#!/bin/bash

list_files() {
    number=0
    for f in *
    do
        if [[ -f $f ]]
        then
            number=$((number+=1))
            echo $f, $number
        fi
    done
}

list_files_array() {
    array=($1/*)
    number=0
    for item in ${array[@]}
    do
        if [[ -f $item ]]
        then
            number=$((number+=1))
            echo $item, $number
        fi
    done
}

list_files $(pwd)
list_files_array $(pwd)

【讨论】:

    猜你喜欢
    • 2017-06-03
    • 2011-12-26
    • 2019-10-20
    • 2022-01-01
    • 2015-03-29
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 2013-05-03
    相关资源
    最近更新 更多