猿问

无法打印进程的PID

我正在尝试使用“ lsof”命令打印正在运行的进程的PID。


看来我确实获得了正确的PID,但是我无法使用“ echo”命令将其打印出来。


关于以下bash脚本:


#!/bin/bash


portsArr=(4003 4200)


for port in "${portsArr[@]}"

do


  PID_OF_EXISTING_PROCESS=$(lsof -ti:"$port")

  if [ -z "$PID_OF_EXISTING_PROCESS"  ];

  then

    echo "Process was already running on port: $PID_OF_EXISTING_PROCESS"

  fi


done

输出是


进程已经在端口上运行:


这意味着已识别出PID(“ if”命令到达该点,再加上一些回波,我发现那时PID_OF_EXISTING_PROCESS等于4003),但由于某种原因未在“ echo”中打印“ 命令。


慕尼黑的夜晚无繁华
浏览 246回答 1
1回答

一只斗牛犬

if [ -z "$PID_OF_EXISTING_PROCESS"  ];仅当字符串为空时,此测试才通过。使用-n来验证它不是空。if [ -n "$PID_OF_EXISTING_PROCESS"  ];
随时随地看视频慕课网APP
我要回答