我正在开发一个将markdown文件转换为文本捆绑包的工具,从Zett修改了一段很棒的代码,以便在macOS上使用,因为我将把我的Apple Notes文件移植到Craft。
我在使用grep将所有链接解析为数组时遇到问题。无论我多么努力地使用--null
和| xargs -0
这样的选项,结果都会被空白字符分割:
targets=($(grep '![.*](.*)' "$inFile"))
举个例子:我有一个小的降价测试文件,其中包含以下内容:
# Allan Falk - ComicWiki
**Allan Falk - ComicWiki**
![Allan Falk - ComicWiki](images/Allan%20Falk%20-%20ComicWiki.png)
http://comicwiki.dk/wiki/Allan_Falk
运行上面的代码会创建以下数组,其中markdown链接是这样分割的:
![Allan
Falk
-
ComicWiki](images/Allan%20Falk%20-%20ComicWiki.png)
如何将完整的链接作为单独的数组条目(稍后将单独处理,使用sed
复制文件等(?
您可以设置IFS=
(空值(并使用如下读取:
IFS= read -ra arr < <(grep '![.*]' file)
# examine array
declare -p arr
declare -a arr='([0]="![Allan Falk - ComicWiki](images/Allan%20Falk%20-%20ComicWiki.png)")'
<(grep '![.*]' file)
使用进程替换和<
运行grep
,然后将此命令的输出发送到read
工作演示
经过一番挖掘,我发现我的陈述中缺少引号。因此,与其写:
targets=($(grep '![.*](.*)' "$inFile"))
我需要在第一组括号内添加引号:
targets=( "$(grep '![.*](.*)' "$inFile")" )
现在数组运行良好,不会出现空格分割。