Bash 스크립트: 파일 순환

Bash 스크립트: 파일 순환

몇 줄이 포함된 파일이 있습니다.

/snapshot/200
/snapshot/201
/snapshot/202

이제 각 행과 IFS 루프를 사용하여 일부 작업을 수행하려고 합니다.

while IFS=' ' read -r test || [ -n "${test}" ];
do
    if ssh root@$TARGET "[ ! -d $test ]"
    then
        echo "${test}"
    fi
done < $filelist

여기서 문제는 하나의 결과만 얻고 전체 파일을 반복하지 않는다는 것입니다. 이러한 이름을 가진 디렉터리가 존재하지 않으므로 if 문은 정확해야 합니다.

하지만 전체 if 부분을 제거하고 그냥 사용하면

echo "${test}"

루프가 작동합니다.

답변1

ssh루프에서 표준 입력 스트림을 상속 하고 에서 읽은 첫 번째 줄을 제외한 while전체 파일을 읽습니다 .$filelistread

ssh이 작업을 중지하려면 , ssh -n또는 를 사용하십시오 ssh ... </dev/null.

ssh이런 방식으로 작업하면 아래와 같이 간단한 리디렉션이나 파이프를 통해 원격 시스템에 데이터를 전달할 수 있습니다.

ssh remote 'cat >remotefile' <localfile

여러분도 구경해 보세요”파이프, 리디렉션 및 원격 연결이 포함된 셸 명령을 이해하는 데 도움이 필요합니다.".

관련 정보