Shell sed、别名和引号问题

Shell sed、别名和引号问题,shell,sed,alias,Shell,Sed,Alias,我不熟悉shell编程 我有一个命令sed-I'$d'~/.bash_history,它工作得很好。我想给它取个别名,所以我把它写成 alias rh='sed -i "$d" ~/.bash_history' 当我执行rh时,它执行时不会出错,但不会从文件中删除任何内容。我感觉它与引号有关 我做错了什么?Bash计算“$d”的值,如果未定义$d,则将其替换为“”。 试试这个: alias rh='sed -i '\''$d'\'' ~/.bash_history' 使用函数可以简化报价:

我不熟悉shell编程

我有一个命令sed-I'$d'~/.bash_history,它工作得很好。我想给它取个别名,所以我把它写成

alias rh='sed -i "$d" ~/.bash_history'
当我执行
rh
时,它执行时不会出错,但不会从文件中删除任何内容。我感觉它与引号有关

我做错了什么?

Bash计算“$d”的值,如果未定义$d,则将其替换为“”。 试试这个:

alias rh='sed -i '\''$d'\'' ~/.bash_history'

使用函数可以简化报价:

rh () { sed -i '$d' ~/.bash_history; }

在我的情况下,我必须实施一个混合解决方案,相当于:

alias rh='function _rh(){ sed -i '\''$d'\'' ~/.bash_history ; };_rh'