如何使用shell脚本去除linux进程ID中的多余字符

如何使用shell脚本去除linux进程ID中的多余字符,linux,shell,unix,command,pid,Linux,Shell,Unix,Command,Pid,我试图通过pid杀死一个进程,这是我从web上找到的脚本 PID=`ps -ef | grep myProcess | grep -v grep | awk '{print $2}'` echo -e Killing myProcess with pid: $PID.. 输出:使用pid终止myProcesswith:13275^M 有人知道为什么会有一个^M,我如何摆脱它,因为kill命令无法运行: **arguments must be process or job IDs**

我试图通过pid杀死一个进程,这是我从web上找到的脚本

PID=`ps -ef | grep myProcess | grep -v grep | awk '{print $2}'`  
echo -e Killing myProcess with pid: $PID..  
输出:使用pid终止myProcesswith:13275^M

有人知道为什么会有一个^M,我如何摆脱它,因为kill命令无法运行:

**arguments must be process or job IDs**
我在网上搜索过,但仍然不知道如何克服这个问题。。 感谢您的帮助!!谢谢

从a开始,对awk的print命令总是附加一个换行符(有时可以用Control-M或^M表示)

看来printf将是一个合适的替代方案。也许:

PID=ps -ef | grep myProcess | grep -v grep | awk '{printf "%i",$2}'

首先,您的语法是错误的。使用
$()
调用命令并将其输出存储到变量

PID=$(ps -ef | grep myProcess | grep -v grep | awk '{print $2}')
其次,您可以在一个
awk
语句中完成这一切,而无需额外的
grep
过程

ps -eo pid,args | awk '/myProces[s]/{cmd="kill  "$1;print cmd; }'

从我所看到的,你不想通过PID,通过它的名字杀死一个进程。通过获取进程PID,然后尝试通过PID杀死它。如果要按名称终止,请使用
killall processname

您可以使用:

PID=`pidof myProcess`

@kurumi-抱歉,我现在无法测试它-我需要调整什么?谢谢你提供的信息,我会尝试一下!