在目录路径中使用变量时如何删除空格。例如,我正在尝试做
alias test='echo /david/$1'
当我尝试
test hhh
这会产生
/david/ hhh
变量前有一个空格。这似乎很简单,但我找不到解决方案。
在目录路径中使用变量时如何删除空格。例如,我正在尝试做
alias test='echo /david/$1'
当我尝试
test hhh
这会产生
/david/ hhh
变量前有一个空格。这似乎很简单,但我找不到解决方案。
alias
不做参数扩展。完全没有。改用函数。
test (){
echo "/david/$1"
}
男子重击:
没有在替换文本中使用参数的机制。如果需要参数,则应使用 shell 函数(请参阅下面的函数)。[...] 对于几乎所有用途,别名都被 shell 函数所取代。
作为别名扩展的一部分,在扩展字符串的末尾添加了一个空格(否则不能添加任何参数,例如alias ll='ls -l'
.Soll -a
将被扩展为ls -l-a
错误的)。因此,我认为除了使用Ignacio提出的功能之外,没有其他任何解决方案可以解决这个问题。
无论如何,使用test
as 函数或别名并不是最好的做法,因为它是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