Arrays Bash-附加到数组问题
我对bash很陌生 我有以下代码:Arrays Bash-附加到数组问题,arrays,bash,Arrays,Bash,我对bash很陌生 我有以下代码: while read line do foundproduct=`echo $line | awk -F "\"*,\"*" '{print $2}'` if [ "$foundproduct" == "$product" ]; then productid=`echo $line | awk -F "\"*,\"*" '{print $19}'` newid=1 for i in ${produ
while read line
do
foundproduct=`echo $line | awk -F "\"*,\"*" '{print $2}'`
if [ "$foundproduct" == "$product" ]; then
productid=`echo $line | awk -F "\"*,\"*" '{print $19}'`
newid=1
for i in ${productids[@]}
do
if [ "${productids[i]}" == "$productid" ] ; then
newid=0
break
fi
done
if (( newid == 1 )) ; then
declare -p productids
echo "$productid"
echo "1. $productids[${#productids[@]}]"
productids+=("$productid")
echo "2. $productids[${#productids[@]}]"
declare -p productids
fi
loadid=`echo $line | awk -F "\"*,\"*" '{print $39}'`
fi
done < hddtable1.csv
CSV中的列如下所示:
在同一个脚本中,我在bash中使用了这种附加到数组的方法,效果很好,有人能帮我弄清楚为什么这样做不起作用吗?我尝试过使用productid+=“$productid”,出于某种原因,它只是将所有内容附加到数组中第一个条目的末尾
在数组中迭代:
for i in ${productids[@]}
do
echo "${productids[i]}"
done
此文件的完整输出:
ST900MM0006
ST900MM0006
ST900MM0006
ST900MM0006
ST900MM0006
ST900MM0006
ST900MM0006
ST900MM0006
ST900MM0006
ST900MM0006
ST900MM0006
ST900MM0006
ST900MM0006
ST900MM0006
您可以像这样轻松地附加到Bash数组:
productids+=("$productid")
您可以在on中找到类似的示例。您可以像这样轻松地附加到Bash数组:
productids+=("$productid")
您可以在on中找到类似的示例。在迭代数组时,我错误地访问了该数组。应该使用“$i”而不是“${productids[i]}”。在迭代数组时,我错误地访问了该数组。应该使用“$i”而不是“${productids[i]}”。刚刚尝试过,它给了我相同的结果。@Noah,你能在命令前后
声明-p productids
并复制粘贴你的结果和你输入的确切命令吗,进入你的问题?@Noah你确定你没有打错吗?@Noah,echo$BASH_VERSION
的输出是什么?@ghoti完成了,我看到这产生了我想要的结果,那么我该如何使用它?刚刚尝试了一下,它给了我同样的结果。@Noah,你能在命令前后声明-p productids
吗,然后将你的结果和你输入的命令复制粘贴到你的问题中?@Noah你确定你没有打错吗?@Noahecho$BASH_VERSION
?@ghoti完成了,我看到这产生了我想要的结果,那么我如何使用它呢?那么。。到底是什么不起作用?您的结果与我对您的代码的期望完全相同。你期望的是什么?好吧,停止“假设性”的事情,提供一个能真正显示你真正问题的答案。顺便说一句,我们这里有真实的编辑历史。你不需要在最后添加EDIT1/EDIT2/EDIT3的内容——形成你的编辑,为那些以前从未见过这个问题的人提供最大的可读性;以前版本的人如果想知道更改了什么,可以检查差异。我没有要求“完整的相关代码”。我要求(站点规则要求您提供)一个——在没有不必要的环境设置或依赖项的情况下运行时产生相同bug的尽可能短的代码。这是一个不错的时机,尤其是。我希望尝试生成一个单独的、简短的、自包含的、可复制/粘贴的脚本将引导您自己发现问题的原因。如果没有,它会把问题放到一个我可以为它建立答案的状态。所以。。到底是什么不起作用?您的结果与我对您的代码的期望完全相同。你期望的是什么?好吧,停止“假设性”的事情,提供一个能真正显示你真正问题的答案。顺便说一句,我们这里有真实的编辑历史。你不需要在最后添加EDIT1/EDIT2/EDIT3的内容——形成你的编辑,为那些以前从未见过这个问题的人提供最大的可读性;以前版本的人如果想知道更改了什么,可以检查差异。我没有要求“完整的相关代码”。我要求(站点规则要求您提供)一个——在没有不必要的环境设置或依赖项的情况下运行时产生相同bug的尽可能短的代码。这是一个不错的时机,尤其是。我希望尝试生成一个单独的、简短的、自包含的、可复制/粘贴的脚本将引导您自己发现问题的原因。如果没有,它会把问题放到一个状态,我可以为它建立一个答案。也许。在${productids[@]}中为i运行时,您正在逐步遍历这些值。如果您想将$i
作为索引,您应该在“${!productids[@]}”
中为i使用。在${productids[@]}
中为i运行时,您正在逐步遍历这些值。如果您想将$i
作为索引,那么应该在“${!productids[@]}”
中为i使用。