Linux 执行awk时获取意外换行错误

Linux 执行awk时获取意外换行错误,linux,bash,shell,awk,Linux,Bash,Shell,Awk,我正在linux命令行中运行以下脚本: ps -ef| grep "java -Droute=full" | awk 'NR!=1{print $2}' | while read output; do pid=$(echo $output) kill $pid done 我得到以下错误: awk: cmd. line:1: NR!=1{print awk: cmd. line:1: ^ unexpected newline or end of string 我相信引

我正在linux命令行中运行以下脚本:

ps -ef| grep "java -Droute=full" | awk 'NR!=1{print $2}' | while read output;
do
 pid=$(echo $output)
 kill $pid
done
我得到以下错误:

awk: cmd. line:1: NR!=1{print
awk: cmd. line:1:            ^ unexpected newline or end of string
我相信引号和空格是一致的,但为什么我仍然得到这个错误

ps-ef | grep“java-droote=full”的输出


您试图解决的实际问题类似于“如何终止其命令行包含
java-droote=full
的进程”

更简单、更安全的方法是只使用
pkill

pkill -f 'java -Droute=full'

这将替换整个脚本。

能否显示
ps-ef | grep“java-droote=full的输出“
。?@user3302647,在问题中添加了它本身。@tanmay2507为什么需要
NR=1
,您是否使用它跳过
ps-ef
的标题,如果是,您不需要它,因为
grep
已经为您这样做了;直接使用
awk'{print$2}'
我同意这不会产生错误,假设您的单引号是真正的单引号(即美国键盘上分号右边的键),而不是一些类似的Unicode。但是,作为大多数(?)Linux上的一种解决方法,请尝试
pkill-f
。这会给您相同的结果吗?ps-ef | awk-F'{if($0~/java-droote=full/){print$2;kill$2}}'我尝试了这个,但是我得到了这个错误:pkill:invalid option--'D',奇怪的是当我试图从Jenkins作业运行命令时,它显示了错误,但是当我直接在远程服务器CLI中运行命令时,“它工作得很好。@tanmay2507:听起来引用詹金斯的话有问题。尝试使用双引号而不是单引号(
而不是
)。或者您可能需要出于某种原因将其转义(
\”
\”
)。
pkill -f 'java -Droute=full'