我的脚本遍历所有子子目录并在所有 .tex 文件上调用pdflatex
命令:
#!/usr/bin/env bash
shopt -s globstar
for d in ./*/**/*.tex; do
echo pdflatex "$d"
done
我的问题
如何在循环中将当前工作目录设置为当前子目录?
类似的问题:如何将当前工作目录设置为脚本目录?
为什么我问
我的 .tex 文件包含相对路径,这就是为什么编译器仅在当前工作目录是文件所在目录时才起作用的原因。
我的脚本遍历所有子子目录并在所有 .tex 文件上调用pdflatex
命令:
#!/usr/bin/env bash
shopt -s globstar
for d in ./*/**/*.tex; do
echo pdflatex "$d"
done
我的问题
如何在循环中将当前工作目录设置为当前子目录?
类似的问题:如何将当前工作目录设置为脚本目录?
为什么我问
我的 .tex 文件包含相对路径,这就是为什么编译器仅在当前工作目录是文件所在目录时才起作用的原因。
您需要将
cd
命令放入循环中。问题是您的路径是相对于当前目录的,因此必须在每次迭代开始时将工作目录重置回起点,以便cd
使用您的相对路径。子shell 为我们执行此( ... )
操作(目录更改仅在子shell 的范围内持续)。