我正在尝试编写一个编译乳胶源的shell脚本。我希望获取参数文件的名称,该文件包含在如下命令中:
\ {参考书目文件名}
我需要将“filename”保存到shell变量中。我对此的解决方案(在tcsh中)非常令人尴尬:
设置bioliography = grep -v -E "[[:blank:]]*%[[:blank:]]*" poltheory.tex | grep -E "\\bibliography{[A-Za-z0-9_\.]*}" | tail -1 | sed 's/\\bibliography//' | tr -d { | tr -d } | awk '{print $1}'
这打破了:
当然,我有一种优雅的方式可以忽略这一点。你能哇我?我已经有了一个工作命令,所以这只是以美女和魔法的名义。
答案 0 :(得分:1)
规则1:始终使用Bourne系列shell编写shell脚本,而不是csh系列shell。
从.aux文件中提取信息更容易。在这里,我将使用bash的额外功能来切断文件名末尾的.tex:
#!/bin/sh
texfile="$1"
auxfile="${texfile%.tex}.aux"
grep '^.bibdata{' "$auxfile" | sed 's/.*{//;s/}.*//'