【发布时间】:2011-10-14 09:37:52
【问题描述】:
首先我应该解释一下我想做什么......
- 我有 'n' 个文件,其中有 'n' 个行。我只知道 行数将是偶数。
- 用户选择他们想要的文件。这被保存到一个
数组名为
${selected_sets[@]}。 - 程序将打印以筛选随机选择的“奇数” 随机选择的文件中的行。
- 一旦打印了该行,我就不想再打印它了...
大部分都很好,但是我无法根据 ${selected_sets[@]} 的内容创建数组...我想我的语法全错了 :)
for i in ${selected_sets[@]}
do
x=1
linecount=$(cat $desired_path/$i | wc -l) #get line count of every set
while [ $x -le $linecount ]
do ${i}[${#${i}[@]}]=$x
x=$(($x+2)) # only insert odd numbers up to max limit of linecount
done
done
问题是${i}[${#${i}[@]}]=$x
我知道我可以使用array[${#array[@]}]=$x,但我不知道如何使用变量名。
欢迎任何想法(我真的很难过)!!!
【问题讨论】:
-
为什么要命名变量?如果您想稍后再次访问这些数组,可以将它们存储在一个双下标数组中,您可以在 for 循环之外声明它。
-
我只使用了大约一周的 bash 数组,所以我的推理是基于这样一个事实,即我认为这将是实现我想要的最佳方式......双下标数组是新的对我来说......我会给他们一个阅读,看看他们是否按照我的意愿行事。感谢您的提醒!
-
P.S - 知道在线文档吗?
-
我喜欢使用ss64.com/bash 解决我的大部分 bash 问题。
标签: arrays bash shell unix dynamic