2010-07-25 2 views
2

'shift'를 사용하여 명령 줄 인수를보고 $ @를 비 웁니다. 그러나 이제는 원래 인수를 다음과 같이 전달하려는 기존 ksh 스크립트를 수정해야합니다. 나중에 두 번째 스크립트.ksh 입력 배열을 변수에 저장하고 다른 스크립트에 전달

변수를 $ @로 복사하여 두 번째 스크립트로 전달하면이 작업을 수행 할 수 있지만 인용 된 명령 줄 인수로는 작동하지 않습니다.

나는 아래와 같이 '프린터'라는 스크립트가있는 경우 : 다음과 같은

#!/bin/ksh 

[email protected] 
echo "Printing args" 
until [[ $# -eq 0 ]];do 
    echo $1 
    shift 
done 

./printer2 $INPUT 

및 프린터 2 : 내가 할

./printer first second "third forth" 

의 출력을 원하는

#!/bin/ksh 

echo "Printing second args" 
until [[ $# -eq 0 ]];do 
    echo $1 
    shift 
done 

을 :

Printing args 
first 
second 
third forth 
Printing second args 
first 
second 
third forth 

$ INPUT 할당시와 프린터 2로 전달할 때 둘 다 변수 주위에 여러 가지 조합을 시도했지만 시도 할 수 없습니다. 누구든지 도와 줄 수 있습니까?

답변

4

좋아, 나는 시행 착오가 엄청난 후 해결책을 찾은 것 같아. 이 같은

지정 $ 입력 :

set -A INPUT "[email protected]" 

다음은 다음과 같이 전달하기 :

./printer2 "${INPUT[@]}" 

가 난 후 출력을 생성합니다.

전체 첫 번째 스크립트는 그러므로 :

#!/bin/ksh 

set -A INPUT "[email protected]" 
echo "Printing args" 
until [[ $# -eq 0 ]];do 
    echo $1 
    shift 
done 

./printer2 "${INPUT[@]}" 

./printer first second "third fourth" 

출력 :

Printing args 
first 
second 
third fourth 
Printing second args 
first 
second 
third fourth 

사람이 내가 노력 다른 것들로 문제를 설명하고자하는 경우

주세요 나는 아직도 관심이있어!

+0

관심 분야와 관련 있습니다. 그래도 도와 ​​줘서 고마워! – Katerberg

+0

이유를 보려면 http://unix.stackexchange.com/questions/41357/what-is-the-most-correct-way-to-pass-an-array-to-a-function을 참조하십시오. –

관련 문제