我有一段代码来编译tex文档。
#!/usr/bin/env bash
filename="thesis"
pdflatex -shell-escape $filename
makeglossaries $filename
bibtex $filename
pdflatex $filename
pdflatex $filename
# for Ubuntu
#xdg-open $filename.pdf
# for mac
open $filename.pdf
如何让这个脚本在Linux和OS X上运行?我认为应该是这样的,
if is Linux; then
xdg-open $filename.pdf
elif is OS X; then
open $filename.pdf
fi
答案 0 :(得分:5)
检测当前平台的标准方法是调用uname
:
uname=$(uname);
case "$uname" in
(*Linux*) openCmd='xdg-open'; ;;
(*Darwin*) openCmd='open'; ;;
(*CYGWIN*) openCmd='cygstart'; ;;
(*) echo 'error: unsupported platform.'; exit 2; ;;
esac;
"$openCmd" "$filename.pdf";
答案 1 :(得分:3)
我建议您尝试执行功能检测,而不是尝试执行功能检测,而不是在使用未在所有平台上实现的功能之前,尝试检测它是否支持当前平台,不管是什么。你可以做如下的事情
if command -v xdg-open >/dev/null 2>&1; then
xdg-open $filename.pdf
elif command -v open >/dev/null 2>&1; then
open $filename.pdf
else
echo >&2 "I don't know how to open the pdf"
fi
上面的command -v xdg-open >/dev/null 2>&1
会检查您的路径中是否有名为xdg-open
的程序。如果是,我们将使用它。否则,我们会尝试不同的选择。