【发布时间】:2014-04-29 14:12:57
【问题描述】:
我尝试在 bash 中创建一个伪数组
frame1=(one two three)
frame2=(one two three)
frame3=(one two three)
echo ${frame2[2]}
有效但
for ((fr=1; fr<=$records; fr++))
do
frame$fr=(one two three)
done
不起作用。如何在 bash 中制作这样的伪数组?
[编辑] 如果我尝试在内部循环中使用变量它不起作用
for ((fr=0; fr<=$records; fr++))
do
declare -a "frame$fr=(one two three)"
done
for ((fr=0; fr<=$records; fr++))
do
for ((lv=0; lv<=$fields; lv++))
do
#echo ${frame$fr[2]}
echo ${frame6[$lv]}
done
done
上面的工作,但被注释掉的行不起作用
line 16: ${frame$fr[2]}: bad substitution
【问题讨论】:
-
回复:您的编辑。您必须使用间接扩展。顺便说一句,Bash 不应该像这样使用类似指针。将其留给其他编程语言并检查您的设计。现在,如果您真的想要这样做,
name=frame$fr[$lv]; echo "${!name}"会做到的。 -
我只是尝试使用 awk 从电子表格中获取字段(图像)并将它们发送到数组,然后发送到 imagemagick。你会叫#!/bin/awk 一种语言吗?我可以从 awk 发送到 imagemagick 吗?否则你会建议什么语言,因为我认为这样我会遇到麻烦,因为我仍然必须在数组中放入真实值。
-
您可以尝试使用 Perl,因为它对 ImageMagick 有很好的绑定,并且您可以毫无问题地处理数组数组。 Python 也可以。