정수를 매개변수로 보내는 방법

정수를 매개변수로 보내는 방법

Linux에서 스크립트를 작성해야 합니다. 각 반복마다 다른 매개변수를 사용하여 함수를 여러 번 실행하고 싶습니다.

다음 코드를 작성합니다.

#!/bin/bash
bash << _EOF_
for ((i=0; i<=20;i++));do
MYFUNCTION -X
done
_EOF_

여기서 -X는 정수여야 합니다. 대신 글쓰기를 시도했지만 $i성공하지 못했습니다.

답변1

잃다트레독그것은 잘 작동합니다 :

#!/bin/bash
for ((i=0; i<=20;i++));do
    MYFUNCTION "-$i"
done

또는 다음을 사용할 수 있습니다.작은따옴표 구분 기호, 이를 $i방지 합니다.설정되지 않은 외부 컨텍스트에서 삽입:

#!/bin/bash

bash << '_EOF_'
for ((i=0; i<=20;i++));do
    MYFUNCTION "-$i"
done
_EOF_

그러나 새로 시작된 bash 프로세스에서 또 다른 bash를 시작할 이유가 거의 없습니다.

답변2

이 경우 heredoc을 사용할 이유가 없습니다.

다음 코드는 bash 버전 4.2.26에서 제대로 실행됩니다.

#!/bin/bash
function f()
{
    echo $1;
};
for i in {1..20}; # This works for a range of integers, but for unrelated values, you can use "i in x y z" format
do
    f $i; 
done;

여전히 문제가 있는 경우 bash 버전과 테스트 중인 전체 코드를 제공하세요.

관련 정보