"语法靠近意外的令牌`{cd'"定义shell函数

时间:2016-08-08 21:14:12

标签: linux bash

根据我之前发布的建议,我写了一个bash脚本

#!/bin/bash

mycd() 
{cd /home/milenko/data;}

mycd

./p2

p2是可执行的

但是

milenko@milenko-HP-Compaq-6830s:~$ bash a1.sh
a1.sh: line 4: syntax error near unexpected token `{cd'
a1.sh: line 4: `{cd /home/milenko/data;}'

为什么?

1 个答案:

答案 0 :(得分:1)

Shell语法(不仅仅是bash,而是在POSIX sh中)是围绕称为" words"的单元构建的。 {在解析为自己的单词时只具有其语法意义 - 这意味着它需要被空格包围(包含换行符的类别)。

写这个的传统方式是:

mycd() {
  cd /home/milenko/data
}

...或者,如果您想最小化换行符:

mycd() { cd /home/milenko/data; }

可以删除最终;和结束}之间的空格(因为;,如果在引号外找到并且没有转义,则结束任何单词在它之前),但这将被视为丑陋:

mycd() { cd /home/milenko/data;} # leaving out the last space is legal, but please don't.