2012-11-09 3 views
1

쉘 -fu가 약하고 SGI (IRIX 6.5) 상자가 도움이되지 않습니다. 그것은 리눅스에서 기대했던대로 작동합니다.루프 용 쉘 스크립트 : 변수 strangeness

궁극적 인 목적은 원격 시스템에서 하나 이상의 쉘 스크립트를 실행하는 것입니다. 가 적절한 위치에서 하나의 쉘 스크립트, 그래서이 간단해야한다 :

$ ssh remote.host '/bin/sh -c "for s in *.sh; do echo \$s; done"' 
s - Undefined variable 

... 응, 좋아.

$ ssh remote.host '/bin/sh -c "for i in *.sh; do echo \$i; done"' 
12 

그것은 유사 장애 유발이 함께있어 :

$ ssh remote.host '/bin/sh/ -c "for s in `ls *.sh`; do echo \$s; done"'\ 
s - Undefined variable 

누군가가 나에게 IRIX에 대한 주문 마법을 가르 칠 수있는 임의 호기심 그냥 변수 이름을 변경?

+0

아마도 IRIX/bin/sh는 본쉘이기 때문일 수 있습니다. (나는 단지 추측하고있다, 나는 확실하지 않다 ;-)). 이것을/bin/bash 또는/bin/ksh로 변경할 수 있습니까? 행운을 빕니다. – shellter

+0

이미 작은 따옴표 안에 있기 때문에'$ '를 이스케이프해서는 안됩니다. –

답변

1

:

나는 훨씬 더 좋은 행운이 있었다. csh의 이상한 속성 중 하나는 큰 따옴표 안에있는 달러 기호는 항상 특별 (이스케이프 할 수 없음)한다는 것입니다. 작은 따옴표는 개행 문자를 사용하지 않는 한 예상대로 작동합니다 (csh에서는 백 슬래시로 이스케이프해야 함).

0

필자는 싱글 쿼트와 더블 쿼트를 바꿀 때이 쉘 구현이 더 행복하다는 것을 임의로 발견했습니다. 문제는 원격 호스트의 로그인 쉘은 CSH 때문이다

ssh remote.host "/bin/sh -c 'for s in \`ls *.sh\`; do echo \$s; done'"