Bash 为什么函数定义中花括号前需要空格?
我试图创建一个bash脚本,将一堆PDF转换为文本,以便提取一些信息,但shell给了我以下错误:Bash 为什么函数定义中花括号前需要空格?,bash,function,shell,syntax,Bash,Function,Shell,Syntax,我试图创建一个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 d
./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
在函数名后面和
{
前面需要一个空格:
function doi {
^
来自Bash:
大括号是保留字,因此必须将它们与列表分开
通过空格或其他shell元字符
function…
是定义Bash函数的语法。请改用此语法:
doi() {
...
}
由于()
是元字符,因此在本例中不需要空格(尽管空格使代码更漂亮):
稍微扩展一下,请记住,在命令中,{
之后和`}之前需要一个空格(空格、制表符或换行符),如下所示:
{ command1; command2; ... }
是的。(严格地说,您不需要。doi{
——Bash允许您定义一个名为doi{
——但是在函数名后面需要一个{
标记。)问题是doi{
是一个单独的标记,而不是一个标识符doi
,后跟一个{/code>标记。
{ command1; command2; ... }