我写了以下脚本,
#!/bin/bash
My_File=Image.csv
Value=YES
cat "$My_File" | while IFS=, read first last
do
echo "first='$first' last='$last'"
if [ "$last" == "$Value" ];
then
echo Match_Found
echo $first
array+=("$first")
echo $first is Added
fi
done
echo (${#array[@]})
它dosenot向数组添加任何值,有人可以指出问题。 输入如下,
FA_2015-01_666,NO
FA_2015-01_777,YES
FA_2015-01_888,NO
FA_2015-01_999,YES
FA_2015-01_555,YES
答案 0 :(得分:1)
重定向文件,不要从cat管道或循环在子shell中运行,其中的所有内容在结束时都会丢失。
#!/bin/bash
My_File="Image.csv"
Value=YES
while IFS=, read first last
do
if [ "$last" == "$Value" ];
then
echo Match_Found
echo $first
array+=("$first")
echo $first is Added
fi
done < "$My_File"
echo "${#array[@]}"
答案 1 :(得分:0)
我有一段时间没有做过一些bash编码,但它应该是这样的(我的方式):
#our table to insert an item to
table=( )
tableLength=${#table[@]}
#inserting items
table[$tableLength]="foo"
#you have to refresh this variable everytime
tableLength=${#table[@]}
table[$tableLength]="bar"
#or you can do this without refreshing the length variable
table[${#table[@]}]="foobar"
我建议您使用:
table=()
table[${#table[@]}]="item!"
使用#
作为长度,table[@]
显示所有项目,因此它获取数组的长度并将项目设置为数组或表格的长度