![SSH의 원격 ls 문서가 $()에서 작동하지 않는 이유는 무엇입니까? [복사]](https://linux55.com/image/119988/SSH%EC%9D%98%20%EC%9B%90%EA%B2%A9%20ls%20%EB%AC%B8%EC%84%9C%EA%B0%80%20%24()%EC%97%90%EC%84%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
원격 디렉터리의 파일 수를 계산하려고 합니다.
다음 코드가 있습니다.
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'