SSH를 통해 원격 호스트에서 실행되는 'for-loop'에서 인덱스를 출력하는 방법은 무엇입니까?


0

나는 원격 호스트로 ssh를 보내고 다른 노드의 수를 제어하기 위해 일련의 숫자를 거치는 for 루프를 실행하려고한다.

ssh user@host /bin/bash << EOF
for i in {1..10}
do
echo $i
done
EOF

이 작업을 수행하면 출력은 1에서 10까지의 숫자를 인쇄하는 대신 10 개의 빈 줄에 불과합니다.

로컬 컴퓨터에서 동일한 코드를 실행하면 원하는 출력을 얻습니다. 원하는 출력은 각 줄마다 1에서 10 사이의 10 줄입니다.

SSH에서 실행되는 for 루프에서 인덱스에 액세스하는 방법은 의도 한 기능을 어떻게 달성할까요?


1
당신은 eval을 시도 했습니까? 나는 $i ssh를 통해 전송하기 전에 로컬로 확장됩니다.
Eugen Rieck

답변:


1

로부터 배쉬 매뉴얼 :

여기에 문서
here-documents의 형식은 다음과 같습니다.

<<[-]word
        here-document
delimiter

[...] 단어의 문자가   인용문에서 구분 기호는 단어의 따옴표 제거 결과이며   here-document의 행은 확장되지 않습니다. 단어가 인용되지 않으면 모두   여기에서 문서의 라인들은 파라미터 확장을 거치며,   명령 대체 및 산술 확장.

해 보자:

$ i='Howdy!'
$ ssh user@localhost /bin/bash << EOF
for i in {1..10}
do
echo $i
done
EOF
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
Howdy!
$ ssh user@localhost /bin/bash << 'EOF'
for i in {1..10}
do
echo $i
done
EOF
1
2
3
4
5
6
7
8
9
10
$
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.