首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bash生成页面列表

使用bash生成页面列表
EN

Stack Overflow用户
提问于 2016-10-10 19:20:45
回答 1查看 20关注 0票数 0

我有一个名为mydir的目录,它由以下文件组成:

代码语言:javascript
复制
_Sidebar.md
Jack.md
Amy.md
Robert.md
(Jack) blah blah.md
(Jack) foo bar.md
(Amy) etc etc etc.md
...

_Sidebar.md文件包含我所关心的所有名称的列表,如下所示:

代码语言:javascript
复制
* [[Jack]]
* [[Amy]]
* [[Robert]]

其思想是:获取_Sidebar.md的内容,获取名称列表,循环遍历它们,并为每个名称:

  • 查找名称以(THATNAME)开头的所有文件
  • 将这些文件的名称保存在THATNAME.md

最后,Jack.md会这样读:

代码语言:javascript
复制
(Jack) blah blah.md
(Jack) foo bar.md

我想用bash脚本来完成这个任务!

下面是我到目前为止掌握的代码:

代码语言:javascript
复制
prefixes=($( cat mydir/_Sidebar.md | grep -oP '(?<=\[\[).+(?=\]\])' ))

length=${#prefixes[@]}

for ((i = 0; i != length; i++)); do
  echo "Prefix $i: '${prefixes[i]}'"
  pref=${prefixes[i]}
  pages=$( eval "ls 'mydir/\(*'" )
  echo "$pages"
done

$prefixes数组正确标识名称。其中包含ls命令的行目前还不完整;首先,我希望它给我所有以(开头的文件,但是我得到了一条错误消息:

代码语言:javascript
复制
ls: cannot access mydir/\(*: No such file or directory

但是,当我运行命令ls mydir/\(*时,我确实得到了正确的结果。在使用动态参数调用ls命令时,我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 19:29:57

若要访问带有括号的页面列表,请执行以下操作:

代码语言:javascript
复制
pages=( "$mydir"/*\(*\)* ) # using glob
printf '%s\n' "${pages[@]}"

然后遍历页面:

代码语言:javascript
复制
for page in "${pages[@]}"; do
    echo "$page"
done

并停止使用邪恶版=)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39965289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档