이전 명령에서 반환된 목록에서 루프를 만드는 방법은 무엇입니까?

이전 명령에서 반환된 목록에서 루프를 만드는 방법은 무엇입니까?

모든 하위 디렉터리의 모든 소유자를 나열한 다음 각 ID를 확인하는 스크립트를 만들고 싶습니다(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확인 후 추가하세요.

ls -lrth /apps/wldomains | awk '$1 ~/^d/ { printf "sesu %s\n", $3 }'| ksh
  • 저도 grep | awk압축했어요awk

답변2

구문 분석할 필요가 없습니다.ls:

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.

관련 정보