![前のコマンドから得られたリストからループを作成するにはどうすればよいですか?](https://rvso.com/image/109214/%E5%89%8D%E3%81%AE%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%8B%E3%82%89%E5%BE%97%E3%82%89%E3%82%8C%E3%81%9F%E3%83%AA%E3%82%B9%E3%83%88%E3%81%8B%E3%82%89%E3%83%AB%E3%83%BC%E3%83%97%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
すべてのサブディレクトリの所有者を一覧表示し、各 ID に sesu アクセスできるかどうかを確認するスクリプトを作成したいと思います。
**$**ls -lrth /apps/wldomains | grep '^d' | awk '{ print $3 }'
userid1
userid2
userid3
userid4
.
.
.
**$**sesu - userid1
Please enter your password:
**userid1@SERVER:$**sesu - userid2
Please enter your password:
**userid2@SERVER:$**sesu - userid3
.
.
.
.
答え1
awk の printf 機能を使用し、ksh にパイプします。
ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'
生成するべき
sesu userid1
sesu userid2
sesu userid3
sesu userid4
| ksh
OKなら追加するだけ
ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'| ksh
- 私も圧縮しまし
grep | awk
たawk
答え2
find /apps/wldomains -type d -exec stat -c %U {} \; | sort -u | xargs -n 1 sesu -
find /apps/wldomains -type d
下のすべてのディレクトリ/apps/wldomains
(/apps/wldomains
それ自身を含む)を検索します。stat -c %U
見つかったディレクトリの所有者のユーザー名を出力します。sort -u
これらのユーザー名を取得し、個別のユーザー名のリストに分類します。xargs -n 1 sesu -
このリストを取得して、sesu -
それぞれに対して実行します。
Solaris では、GNU coreutils パッケージをインストールし、gstat
の代わりにを使用しますstat
。