例如,我的 .profile 中有这个函数:
alias () {
command alias "$@"
}
然而,这会执行:
$ alias test=ls
如果我跑
$ alias test="ls"
我怎样才能让它接受带引号的字符串?
答案1
命令行上的双引号会被解析器吃掉。当您调用函数时,必须用单引号引用整个别名表达式,或者使用反斜杠转义每个双引号(或者混合使用转义和引号标记)。因此:
alias foo='echo "hi there"'
alias bar="echo "\"hi\ there\"
如果您尝试重新定义别名以便可以在别名右侧包含空格,则应该使用
command alias "$*"
不同之处在于,此版本扩展了所有位置参数,每个参数均以空格(IFS 的第一个字符)分隔,作为alias
.这允许你做类似的事情
alias foo=echo over here