2016-06-21 6 views
1

여기에 사용자 입력을 전달하고 값을 루프해야하는 문제를 해결하려고합니다. 나는 한 번에 하나의 변수 만 전달할 수있다. 둘 다 작동하지 않습니다.입력 변수를 전달하고 여기에 루프 문서 bash 스크립트

아래 코드는 제 코드입니다.

bash <<START 
echo "Input :$1" 
for i in 1 2 3 4 5 
do 
echo "For Loop Value : $i" 
done 
START 

당신은 내가 오지 않아의 가치를 볼 수있는 것처럼이 스크립트 ./heredoc "ASD"메신저 출력

Input :asd 
For Loop Value : 
For Loop Value : 
For Loop Value : 
For Loop Value : 
For Loop Value : 

아래 얻고 실행하는 동안.

하지만 작은 따옴표를 추가하면 아래에 출력됩니다.

Input : 
For Loop Value :1 
For Loop Value :2 
For Loop Value :3 
For Loop Value :4 
For Loop Value :5 

루프 값뿐만 아니라 입력 값도 출력되도록 어떻게 해결할 수 있습니까?

미리 감사드립니다.

+0

bash << 'START'를 시도했지만이 경우 게시물에 언급 된대로 사용자 입력 변수 값을 잃어 버렸습니다. 어쨌든 고맙습니다. – vinay

+2

오, 미안 해요! 다음 확장을 피하십시오 : 'echo "Loop Value : \ $ i" " –

+0

"gniourf_gniourf "당신은 천재예요 ... 두꺼운 ... 일했습니다 ... – vinay

답변

1

아무 것도 지나지 않습니다. $1은 실행중인 셸의 첫 번째 위치 매개 변수가되며 빈 문자열 일 수 있습니다.

이것은 당신이 원하는 것을 할 것입니다 :

variable="hello there" 

bash <<SCRIPT_END 
echo "Input: $variable" 
for i in 1 2 3 4 5; do 
    echo "For Loop Value: \$i" 
done 
SCRIPT_END 
당신은 그것을 달리 현재의 환경에서 어떤 변수 i의 값으로 보간 될 것으로 여기-문서의 $i을 탈출해야합니다

(빈을 문자열이 설정되지 않은 경우). 당신이을

참고이 (당신이 "여기에-문서 전달"라고 부릅니다) $variable을위한 일이 원하고 우리가 처음 SCRIPT_END로 변경하여 (전체를 단일 인용 할 수없는 이유입니다 'SCRIPT_END').