Vij*_*jay 3 unix shell command-line alias ksh
我有一个命令来杀死一些进程如下:
kill -9 `psu|grep MF1pp|grep -v grep|awk '{print $2}'`
Run Code Online (Sandbox Code Playgroud)
命令工作得非常好
>psu|grep MF1pp|grep -v grep|awk '{print $2}'
29390
29026
$>kill -9 `psu|grep MF1pp|grep -v grep|awk '{print $2}'`
$>psu|grep MF1pp|grep -v grep|awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
当我创建如下的别名并运行它:
alias killaf="kill -9 `psu|grep MF1pp|grep -v grep|awk '{print $2}'`"
$> psu|grep MF1pp|grep -v grep|awk '{print $2}'
5487
5272
$>killaf
ksh: kill: bad argument count
Run Code Online (Sandbox Code Playgroud)
给出了上述错误.
谁能告诉我可能是什么问题?
您正在设置别名的命令行未正确引用.具体来说,back-quote embedded子命令在您设置别名时执行,而不是在您实际想要运行别名时执行.
尝试以这种方式进行设置:
alias killaf='kill -9 `psu|grep MF1pp|grep -v grep|awk '\''{print $2}'\''`'
Run Code Online (Sandbox Code Playgroud)
编辑:我修改了awk命令周围的引号 - 当你已经单引号时嵌入单引号很棘手.