원격 디렉터리의 파일 수를 계산하려고 합니다.
다음 코드가 있습니다.
ssh server.com<<RUNTHIS
FILE_COUNT=$(ls -AU /foo/bar/test_dir)
echo "$FILE_COUNT" > ~/file_count.txt
RUNTHIS
이것을 실행하면 다음과 같은 결과를 얻습니다.ls: /foo/bar/test_dir No such file or directory
하지만디렉토리가 거기에 있습니다. ls /foo/bar/test_dir
서버에 직접 액세스 하면 디렉토리가 나열됩니다.
다음도 작동하고 내용을 파일에 저장합니다.
ssh server.com<<RUNTHIS
ls -AU /foo/bar/test_dir > ~/file_count.txt
RUNTHIS
첫 번째 클립에 무슨 문제가 있나요?
답변1
bash
에 있기 때문에 작동하지 않습니다 heredoc
. 작은따옴표를 사용하여 RUNTHIS
보호해 보세요.
ssh server.com<<'RUNTHIS'
FILE_COUNT=$(ls -AU /foo/bar/test_dir)
echo "$FILE_COUNT" > ~/file_count.txt
RUNTHIS
답변2
문제는 $(ls)가 원격이 아닌 로컬로 확장된다는 것입니다.
이 시도...
ssh -2 -4 -i $key root@$ip -- 'ls -AU /foo/bar/test_dir | wc -l > ~/file_count.txt'