1

在目录路径中使用变量时如何删除空格。例如,我正在尝试做

alias test='echo /david/$1'

当我尝试

test hhh

这会产生

/david/ hhh

变量前有一个空格。这似乎很简单,但我找不到解决方案。

4

2 回答 2

6

alias不做参数扩展。完全没有。改用函数。

test (){
  echo "/david/$1"
}
于 2013-06-14T06:17:38.443 回答
1

男子

没有在替换文本中使用参数的机制。如果需要参数,则应使用 shell 函数(请参阅下面的函数)。[...] 对于几乎所有用途,别名都被 shell 函数所取代。

作为别名扩展的一部分,在扩展字符串的末尾添加了一个空格(否则不能添加任何参数,例如alias ll='ls -l'.Soll -a将被扩展为ls -l-a错误的)。因此,我认为除了使用Ignacio提出的功能之外,没有其他任何解决方案可以解决这个问题。

无论如何,使用testas 函数或别名并不是最好的做法,因为它是内置命令(如果没有别名或命名函数)。type您可以使用内置的 bash 检查如何解释助记符。

我定义了一个别名和一个名为test

$ type test
type test
test is aliased to `echo /xxx/'

$ type -a test
type -a test
test is aliased to `echo /xxx/'
test is a function
test () 
{ 
    echo "/yyy/$1"
}
test is a shell builtin
test is /usr/bin/test
于 2013-06-14T08:26:50.097 回答