몇 줄이 포함된 파일이 있습니다.
/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
전체 파일을 읽습니다 .$filelist
read
ssh
이 작업을 중지하려면 , ssh -n
또는 를 사용하십시오 ssh ... </dev/null
.
ssh
이런 방식으로 작업하면 아래와 같이 간단한 리디렉션이나 파이프를 통해 원격 시스템에 데이터를 전달할 수 있습니다.
ssh remote 'cat >remotefile' <localfile
여러분도 구경해 보세요”파이프, 리디렉션 및 원격 연결이 포함된 셸 명령을 이해하는 데 도움이 필요합니다.".