コマンドラインとスクリプトで実行すると、ps出力が異なります。

コマンドラインとスクリプトで実行すると、ps出力が異なります。

実行中のプロセスのPIDのリストを作成する必要があります。

これはスクリプトです。

ps
echo "fields are "
ps | cut -d' ' -f1

ps展示

  PID TTY          TIME CMD
 2168 pts/4    00:00:00 sh
 2177 pts/4    00:00:00 mailx
 5191 pts/4    00:00:00 sh
 6494 pts/4    00:00:00 sh
 6495 pts/4    00:00:00 ps
12154 pts/4    00:00:00 sh
12172 pts/4    00:00:00 mailx
15618 pts/4    00:00:00 bash

しかし、パイプを切る結果はただ

12154
12172
15618

ベストアンサー1

問題は、cut単一のスペース文字を区切り文字として使用することですが、列名と4桁のPIDが右揃えであるため、先頭のスペースが複数あり、空白行がcut出力されます。

awk別の方法は、これらの入力をよりよく処理することを使用することです。

ps | awk '{ print $1 }'

ps特別な状況でマインドモンキーの答えより良い方法です。

おすすめ記事