在bash中使用变量和多个点?

时间:2014-12-08 21:03:33

标签: bash grep pipeline

我正在尝试完成一个维护脚本,我正赶上以下几行:

PUID=$(ps aux | grep $PID | grep -v $USER| cut -d' ' -f1)

我正在尝试从$PID命令中提取特定进程ID(ps aux),(忽略用户刚刚使用相同PID创建的进程),然后消除除了流程所有者的用户名。

目前,该命令在命令行中运行时运行正常,但是我一直遇到将其分配给变量$PUID的问题,甚至只是将其作为命令执行。有什么建议吗?

编辑:

我正试图解决这个问题,我相信在传递变量$ PID时仍然存在问题,现在它正在使用此行从文件(它正确地执行)中提取

PID = $(cat / nfs / pdx / home / komcconx / PID / current / pid)

如果我添加一个echo $ PID,它将返回正确的pid。

当我运行命令PUID = $(ps -p $ PID -o uname =)时,出现错误“ERROR:进程ID列表语法错误”。如果我在$ PID的位置运行带有“1”的命令,它将正确返回“root”

任何想法?'

最终编辑:

发现问题是从DOS文件中取出PID,我试图用DOS换行符运行命令,这个问题已经关闭了!

1 个答案:

答案 0 :(得分:2)

如果您只想要进程的用户名,可以使用-o选项:

PUID=$(ps -p $PID -o uname=);
echo $PUID