你好,我正在尝试function upsert (
array, object, keyFn,
updateFn = (target, object) => Object.assign(target, object),
insertFn = object => object
) {
const key = keyFn(object)
const index = array.findIndex(
value => keyFn(value) === key
)
if (index !== -1) updateFn(array[index], object)
else array.push(insertFn(object))
}
let arr = [
{ taxonomy: 'category', id: [10, 100] },
{ taxonomy: 'post_tag', id: [20] }
]
const obj = { taxonomy: 'category', id: 30 }
upsert(
arr, obj,
o => o.taxonomy, // used to determine if existing object should be updated
(t, o) => t.id.push(o.id), // operation for updating existing object
({ id, ...o }) => ({ ...o, id: [id] }) // return new object to insert
)
console.log(arr)
目录中文件的内容,并将它们作为代码块附加到markdown文件中。
我能够cat
将文件的内容添加到降价文档中,但是无法在降价文件中添加反引号。反引号不会出现在文件中。如果我在shell中键入cat
,但在以下bash脚本中却没有键入,我可以反引号打印:
printf "``"
答案 0 :(得分:2)
该find
语句实际上找不到任何内容。没有名为*.h
和 *.c
的文件。您需要-o
用于或:
find . -maxdepth 1 '(' -name "*.h" -o -name "*.c" ')'
反引号应位于输出文件中,没有任何理由。就是说,您是说要拥有三个?通常Markdown使用3作为代码块。它们可能也应该放在单独的行上。
for i in $files; do
echo '```' >> report.md
cat $i >> report.md
echo '```' >> report.md
done
您可以一次重定向整个循环的输出。
for file in $files; do
echo '```'
cat "$file"
echo '```'
done > report.md
为了获得更高的鲁棒性,我建议使用find -exec
在每个文件上运行操作。这样,带有空格和其他奇怪字符的文件名将不会使脚本崩溃。
find . -maxdepth 1 '(' -name "*.h" -o -name "*.c" ')' \
-exec echo '```' ';' -exec cat {} ';' -exec echo '```' ';' > report.md
或者您可以完全跳过find
并仅循环浏览所需的文件。面对空格,这也是安全的:
for file in *.h *.c; do
echo '```'
cat "$file"
echo '```'
done > report.md