【发布时间】:2013-05-05 14:49:26
【问题描述】:
我正在处理一些文件夹,每个文件夹代表一本书的一页。例如。 “Iliad-001”将是 Book=Iliad,Page=001。
我想遍历所有文件夹,为每本书创建一个数组,并为找到的每一页向该数组添加一个条目,这样我就可以在我的脚本末尾echo ${Iliad[@]},它会给出我列出了它找到的所有页面。
我遇到的问题是将值添加到具有动态名称的数组中。这是我认为直观的代码(但显然不正确):
for j in */; do
vol_name=$(basename "$j" | sed 's/\(.*\)-[0-9]*/\1/')
page_name=$(basename "$j" | sed 's/.*-\([0-9]*\)/\1/')
$vol_name+=( "$page_name" )
done
这会返回:
syntax error near unexpected token `"$page_name"'
如果我将变量赋值更改为$vol_name+="( "$page_name" )",我会更接近一点:
Iliad+=( 001 ): command not found
【问题讨论】:
-
您的
$(内联嵌套代码已被 sed 的正则表达式终止,因此它告诉您-[0-9]*\/1/')\npage_name是无效令牌。您的 sed 命令需要更强大的分隔符。
标签: arrays bash variable-assignment variable-substitution