我正在尝试创建一个bash脚本,该脚本将一堆pdf转换为文本以提取一些信息,但是shell给了我这个错误:
./AutoBib.sh: line 8: syntax error near unexpected token `pdftotext'
./AutoBib.sh: line 8: ` pdftotext $1 temp.txt'
以下是我的功能示例:
function doi{
pdftotext $1 temp.txt
cat temp.txt | grep doi: | cut -d: -f 2 | head -n 1 >> dois.txt
rm -rf temp.txt
}
doi $PDF
在输入中使用变量PDF
的位置。在添加它起作用的功能之前,我曾经写过脚本:
pdftotext $PDF tempo.txt
答案 0 :(得分:5)
来自Bash manual:
花括号是保留字,因此必须与列表分开 按空格或其他外壳元字符。
function ...
是用于定义Bash函数的outdated语法。改用它:
doi() {
...
}
由于()
是元字符,因此在这种情况下您不需要空格(尽管空格会使代码更漂亮):
doi(){
...
}
稍微扩展一下,请记住,在命令grouping中{
之后和'}'之前需要一个空格(空格,制表符或换行符),如下所示:
{ command1; command2; ... }
答案 1 :(得分:2)
函数名称后{
前需要一个空格:
function doi {
^