2017-02-19 6 views
0

私はUbuntuとbashシェルを使用しています。PSからPIDだけを取得するBashシェルは動作しません

$ ps -ef | awk "{print $2}" | head -3 
UID  PID PPID C STIME TTY   TIME CMD 
root   1  0 0 feb18 ?  00:00:32 /sbin/init splash 
root   2  0 0 feb18 ?  00:00:00 [kthreadd] 

任意の提案:以下のコマンドではなく、唯一のPID秒の全行を返す理由

私は理解できないのですか?

+0

スタックオーバーフローがサイトですプログラミングと開発の質問のために。この質問は、プログラミングや開発に関するものではないので、話題にはならないようです。ヘルプセンターの[ここではどのトピックを参照できますか](http://stackoverflow.com/help/on-topic)を参照してください。おそらく、[Super User](http://superuser.com/)や[Unix&Linux Stack Exchange](http://unix.stackexchange.com/)の方が良いかもしれません。また、[Dev Opsについての質問はどこに投稿しますか?](http://meta.stackexchange.com/q/134306) – jww

+0

@jww:質問はプログラミングの質問として考えることができます。それはスクリプトの一部である可能性のある単一のステートメントに関するものです。プログラミングステートメントの動作に関する質問には、IMHOがあり、スタックオーバーフローが対象です。 – user1934428

答えて

5

これはシェル引用の問題です。二重引用符で囲まれている場合、シェルは "$ 2"を設定していないため空の文字列に展開します。これにより、行全体を印刷するawk '{print }'が残されます。拡大を防ぐために

使用単一引用符:

ps -ef | awk '{print $2}' | head -3 

ところで、あなたはawkはそのために必要とされていない、PIDを取得するにはpsコマンドを使用することができます。

ps -efho pid 
関連する問題