我正在Mac上开发,使用以下命令确认文件名到json数组:
ls **/*.test.json | jq -R -s -c 'split("\n")[:-1]'
它给了我json数组:['folder1/a.test.json', 'folder2/b.test.json', 'c.test.json']
这正是我想要的。然而,当在github action上执行时(在linux下),上面的命令会产生结果:['c.test.json]
并且不包括文件夹中的文件。
我确认文件夹 checkout 成功,因为echo $(ls folder1)
给出a.test.json
。
实现我对命令的期望的最佳方法是什么?
1条答案
按热度按时间bt1cpqcv1#
**
不是标准的sh
功能;Github操作可能需要POSIX shell脚本。要使用不支持
**
的shell遍历任意深的目录结构,请尝试find
:如果只有有限的目录级别,可以尝试
(Also don't use
ls
in scripts,也许还可以看到回声的无用使用。)如果你的文件名中包含换行符,这两种方法都有一些麻烦;
find
可能也会被迫处理这种情况,但我不想进一步复杂化这个答案;也许参见X1 E1 F1 X以获得更全面的讨论。如果您的shell是Bash,则
**
可用,但通常不启用开箱即用;您可以使用shopt -s globstar
来启用它......但如果Github更改了Action的默认shell,那么使用正确的sh
可能会更好。