如何在一行上定义一个函数

时间:2016-07-26 16:44:04

标签: bash function syntax

通常在移动文件时,我需要稍后相反。所以在我的.bashrc中我包含了这个工作代码:

rmv() {
  mv $2/${1##*/} ${1%/*}
}

现在我想知道为什么我不能把它写成一个单一的班轮。这就是我试过的:

rmv() {mv $2/${1##*/} ${1%/*}}

如果我这样做,我会收到此错误:

-bash: .bashrc: line 1: syntax error near unexpected token `{mv'

1 个答案:

答案 0 :(得分:19)

在Bash中,{不会被自动识别为围绕它的特殊/单独标记。因此,您需要{mv之间的空格。

此外:

  • }需要成为命令的开始;所以,如果它不在自己的行上,你需要;来终止上一个命令。
  • 最好在任何参数扩展周围使用双引号,否则当参数包含空格或特殊字符时,您将获得奇怪的行为。

所以:

rmv() { mv "$2/${1##*/}" "${1%/*}" ; }