arrays - 迭代数组值并分配给新变量 shell

标签 arrays linux shell for-loop session-variables

我有一个输入 txt 文件,其中每一行代表一个我需要捕获并分配给变量进行处理的值。我已经创建了一个数组,如下所示,但我想使用这些变量创建一个循环来处理 .txt 中每一行的下面(底部)if 语句。我尝试了以下操作,但它不会迭代,它只是为每一行分配相同的值:

for i in ${pov[@]}
do
 echo ${pov[1]}
done

output:
$ ./sed
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16
SPT_SEQ_010,FY16

这是我正在使用的输入和数组

##$cat seq_fy.txt
spt_seq_01,fy15
spt_seq_01,fy16
spt_seq_02,fy15
spt_seq_02,fy16

##array:
$ cat sed
pov=($(sed \n  seq_fy.txt))

##can echo pov:
$ cat sed
pov=($(sed \n  seq_fy.txt))
echo ${pov[1]}

$ ./sed
SPT_SEQ_010,FY16

我需要获取每个 pov 值(${pov[1]} 到 [50])并像当前在 if 语句/for 循环中一样进行处理,如下所示,直到数组为空。问题是还有由 pov# 确定的其他值。

##current if statement being used and working after declaring each POV separately
##not using an array for the current process
if [ ! -z $pov01 ];
then
export step=${pov01//\"/}
export step03_01=$step
export pov=${pov01//\"/}
.... (using $pov as variable in connection string)
fi

最佳答案

您需要echo ${pov[i]},而不是${pov[1]}:

for i in ${pov[@]}
do
    echo ${pov[i]}
done

如果我正确理解你的代码,你也可以用 while 循环直接读取 seq_fy.txt:

cat seq_fy.txt | while read seqvar; do
    echo $seqvar
done

关于arrays - 迭代数组值并分配给新变量 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29781696/

相关文章:

javascript - 循环遍历json并获取nodejs中的特定值

linux - WebDriverException : Message: unknown error: cannot process extension #1 from unknown error: CRX verification failed: 3

linux - 绝对和相对路径名 --> 堆栈中的环境变量

node.js - 使用 Node.js 作为 Shell

shell - 如何在shell脚本中调用C程序?

javascript - 使用ajax(不使用jQuery)发送php数组会在服务器上产生错误数据

arrays - 从数组中删除 NSTableView 中选定的对象

php - 在 Mac OS X 上为 PHP --enable-zip 安装 zip 扩展

java - Maven 命令 mvn 从终端运行没有错误,但从 python 没有错误

java - Arrays.setAll 不适用于 boolean 值