【发布时间】:2021-05-28 13:00:08
【问题描述】:
我有一个目录名称列表(每个都在一行中),其中包含 rubygem 的名称及其版本。
我想在字符串的最后一个连字符处拆分它们。
文件夹名称字符串由
- 宝石的名字
- 并作为版本号的第二部分
如何同时提取用于进一步处理和
- 保持 gem-name 和已建立的版本号之间的关系?
给定find 返回的列表
find . -type d -regextype posix-extended -regex "^./[a-zA-Z0-9]+([-_]?[a-zA-Z0-9]+)*-[0-9]{1,3}(.[0-9]{1,3}){,3}\$"
我的方法是嵌套数组,像这样
declare -A my_gems
my_gems[gem_name]=()
# append version numbers to the right hand side array
我需要在将用户参数解析为包含 gem_name 和版本列表的脚本的上下文中进一步处理它...
谢谢
【问题讨论】:
-
find ... | while IFS=- read -ra name version; do my_gems["$name"]="$version"; done -
但我认为不可能将数组
$version分配给哈希$my_gems? -
不确定我是否遵循您的要求。
IFS将folder-version拆分为名称和版本。 -
我的意思是我认为
declare -A my_gems=()是不可能的。 IE。将普通数组作为关联数组的值。祝你好运! -
可以用进程替换
< <(find ...)