ユーザーIDループが原因で問題が発生しています。 /etc/passwdに999より大きいIDを持つすべてのユーザーを一覧表示しようとしています。 if..fi文を認識しません。最小限のインストールなので、「awk」コマンドがなければ、これは実際のコードです。
cat /etc/passwd | while IFS=: read name pass uid gid geos home; do if [$uid > 999]; then echo $name di done;
-gtも試しましたが、うまくいきませんでした。
ベストアンサー1
あなたはそうではないと言いましたawk
。これは効率的な解決策だったので、恥ずかしいことです。
awk -F: '$3 > 999' /etc/passwd
4文字以上のuidでユーザーを抽出できるgrep
場合:cut
grep '^[^:]*:[^:]*:[^:][^:][^:][^:]' /etc/passwd | cut -d: -f1
またはsed
:
sed -n 's/^\([^:]*\):[^:]*:[^:][^:][^:][^:].*/\1/p' /etc/passwd
ルーピングに実際にシェルを使用する必要がある場合は、固定コードバージョンがあります。最大の間違いは、これが[
命令であるという事実を忘れてしまったことです。したがって、トルクナイザーにはスペースが必要です。私もそれを整理しましたread
。
while IFS=: read -r name x uid gid geos home shell
do
[ "$uid" -gt 999 ] && echo "$name"
done
コードを渡すhttps://shellcheck.net/それはあなたを助けます。次にお勧めします。