我们使用phpDocumentator来记录我们的PHP代码。 php代码在不同的词典中。 运行phpDocumentator的脚本如下所示:
./phpdoc -d dir1,dir2,dir3,dir4
每次添加新目录时,都必须将此目录添加到脚本中。
我想动态地这样做。
ls -d ../*test*
这列出了所有需要的目录,但是空格分隔而不是逗号分隔。
问题:
如何列出逗号分隔的目录?
如何将此列表作为-d参数添加到phpdoc脚本?
答案 0 :(得分:33)
使用ls -dm */
生成以逗号分隔的目录列表。 -d
仅返回目录,-m
将输出到以逗号分隔的列表。
然后,您可以将输出存储在变量中并将其作为参数传递:
#!/bin/bash
MY_DIRECTORY=/some/directory
FOLDERS=`ls -dm $MY_DIRECTORY/*/ | tr -d ' '`
phpdoc -d $FOLDERS
答案 1 :(得分:5)
无需调用外部程序(假设使用bash或ksh93):
var=(../*test*)
IFS=','
phpdoc -d "${var[*]}"
请参阅下面的@ mklement0评论。这个解决方案的问题是它会找到文件名和目录,因此:
var=(../*test*/) # trailing / ensures directories only
IFS=','
phpdoc -d "${var[*]/%/}" # remove the trailing / from the names
涉及扩展所有数组元素的解决方案是@ mklement0(除了没有必要转义/)。
答案 2 :(得分:4)
以下是使用find
和paste
的简单方法:
dirs=$(find . -type d | paste -d, -s)
并且相同,但使用绝对路径:
dirs=$(find "$PWD" -type d | paste -d, -s)
以及tr
的版本:
dirs=$(find . -type d -print0 | tr '\0' ',')
上面将递归扫描文件夹,除非您添加-maxdepth 1
仅列出一个级别。
然后运行phpdoc
:
./phpdoc -d "$dirs"
答案 3 :(得分:1)
./phpdoc -d $(ls -dm ../*test* | tr -d ' ')