2013-04-05 10 views
1

폴더에서 파일이 마지막으로 업데이트 된 시간을 다시보고하는 스크립트를 작성하려고합니다. 폴더는 매일 작성됩니다 (예 :/home/user/todaysdate). somethng가 만들어 질 때 만들어지는 todaysdate 폴더 exsist의 내부. 예를 들어 우리는 fol1 fol2 fol3을 가질 것입니다. 각 폴더에 로그인하고 마지막으로 생성 된 파일의 시간을 표시하는 스크립트를 얻으려고합니다.Bash 스크립트 :리스트에서 변수를 사용하는 방법

#!/bin/bash 
folder=`date +%Y%m%d` 
ssh -q server "cd /home/user/$folder/ ; bash -c "ls -la | uniq" > list.txt 

이 만들어진 다른 폴더의 목록을 작성합니다. 이제 막 붙어있는 각 폴더에 ssh를 설치해야합니다. List.txt 파일의 출력은 다음과 같습니다 fol1 FOL2 fol3

ssh -q server "bash -c \"ls -ltr /home/user/$folder/<Need List Variable Here> | tail -1\"" awk '{print $8} 

위의 명령은 나에게 내 시간을 제공합니다. server와 list.txt에 생성 된 변수에 ssh를 넣으려면 while 루프가 필요하다고 생각하지만 작동하지는 않습니다. 어떤 도움이 필요합니까?

+0

for 루프를 사용하여 무시합니다. '$ (cat list.txt)의 LINE에 대해서 do' – user2247298

답변

1

List.txt 파일이 공간 루프에 대한/강타를 시도 (예를 들어 "fol1 FOL2 fol3")로 구분되어있는 경우 :

for folder in $(cat list.txt); 
do 
    echo $folder; 
done 

List.txt 파일 인 경우 개행 다음 반복 동안 떠들썩한 시도 분리 된 :

cat list.txt | while read folder; 
do 
    echo $folder; 
done 

bash 루프에 대한 자세한 내용은이 페이지를 참조하십시오.

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-7.html

+0

불행하게도 파일이나 $ (ls)를 읽는 것은 위험이 따른다. 파일 이름에는 특수 문자가있어 정말 잘 수 있습니다. http://mywiki.wooledge.org/ParsingLs –

관련 문제