bash:如何将变量传递到进程替换中的循环

bash:如何将变量传递到进程替换中的循环

如何将进程替换中的变量值传递到该进程替换中的循环?

我正在将 csv 文件读入关联数组,在读取每一行时,我希望有一个循环if来测试数组中的特定元素是否不为空(并为这些元素执行操作):

IFS=","
$csvfile="path/to/file.csv"
declare -A arr1  
declare -A arr2  
declare -A arr3 

while read -r -a linedata
do
    arr1["${linedata[1]}"]="${linedata[10]}"
    arr3["${linedata[1]}"]="${linedata[0]}"

    echo repeat -"${linedata[2]}"-

    if [[ -n "${linedata[2]}" ]] && [[ ! "${linedata[2]}" == "" ]] ; then
        arr2["${linedata[2]}"]="${linedata[10]}"
        arr3["${linedata[2]}"]="${linedata[0]}"
    else
        echo skipped for "${linedata[2]}"
    fi
done < $csvfile

我看到,虽然块echo之前正确地if打印了数组中的值linedata,但数组中的值似乎甚至没有传递到条件if(条件永远不会满足,尽管应该如此,以便else块始终执行后数组元素值为空)。

我尝试过这样做< <($csvfile),但收到有关权限被拒绝的错误。

提前致谢

相关内容