如何在目录路径中使用变量时删除空白区域。 例如,我正在尝试
alias test='echo /david/$1'
当我尝试
时test hhh
这会产生
/david/ hhh
在变量前面有一个空格。看起来很简单,但我找不到解决方案。
答案 0 :(得分:6)
alias
不进行参数扩展。完全没有。改为使用函数。
test (){
echo "/david/$1"
}
答案 1 :(得分:1)
man bash:
在替换文本中没有使用参数的机制。如果需要参数,则应使用shell函数(参见下面的函数)。 [...]对于几乎所有目的,别名都被shell函数取代。
作为别名扩展的一部分,在扩展字符串的末尾添加了一个空格(否则无法添加任何参数,例如alias ll='ls -l'
。所以ll -a
将扩展为ls -l-a
这是错的)。所以我认为没有解决这个问题的任何其他方法,然后使用函数Ignacio提出。
无论如何使用test
作为函数或别名不是最好的事情,因为它是bash内置命令(如果没有别名或命名函数)。您可以使用内置的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