zsh - 在``(命令替换)中评估变量

时间:2017-06-27 22:20:12

标签: shell zsh

# remove all processes by port
# like killport 8000
killport() {
  kill `lsof -t -i:$1`
}

然而,当我试图运行命令时,我得到了这个

killport 8000    
killport:kill:2: not enough arguments

1 个答案:

答案 0 :(得分:2)

尝试:

killport() {
  local port=$(lsof -t -i:"$1")
  [[ -n $port ]] && kill $port
}

你的问题是,如果lsof -t -i:$1没有输出任何东西 - 因为没有碰巧在指定端口监听 - kill内置接收无参数,导致它抱怨。

使用上面的解决方案,如果指定的端口未被使用,则会有无输出,但退出代码 - 如$?所示 - 将为{{1} }。