Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

SLAX 매개 변수 개요

매개 변수는 명명되거나 명명되지 않은 템플릿 또는 함수에 전달될 수 있습니다. 매개 변수를 선언한 후 매개 변수 이름 앞에 달러 기호($)를 붙여 참조할 수 있습니다.

매개 변수 선언

SLAX 스크립트에서 명령문을 사용하여 매개 변수를 선언합니다 param . 필요에 따라 선언의 각 매개 변수에 대한 초기 값을 정의할 수 있습니다. 예를 들어:

매개 변수의 범위는 로컬 또는 전역일 수 있습니다. 지역 매개 변수는 블록의 시작 부분에 선언되어야 하며 해당 범위는 선언된 블록으로 제한됩니다. 스크립트 초기화 시 Junos OS에 의해 값이 설정되는 매개 변수는 전역 매개 변수로 정의해야 합니다. 전역 매개 변수 선언은 스타일시트 선언 바로 뒤에 배치됩니다. 스크립트는 전역 매개 변수에 기본값을 할당할 수 있으며, 이는 Junos OS가 매개 변수에 값을 제공하지 않는 경우에 사용됩니다.

템플릿에서는 매개 변수 목록에서 또는 template 블록의 문을 사용하여 param 매개 변수를 선언합니다. 필요에 따라 각 템플릿 매개 변수에 대한 기본값을 선언할 수 있습니다. 매개 변수 없이 템플릿을 호출하면 매개 변수는 기본값을 사용합니다. 템플릿에서 기본값을 정의하지 않으면 매개 변수는 기본적으로 빈 문자열로 설정됩니다.

다음과 같은 명명된 템플릿 print-host-name 은 매개 변수를 message 선언하고 기본값을 정의합니다.

대안적이지만 동등한 선언은 다음과 같습니다.

SLAX 템플릿에서는 매개 변수를 선언하고 해당 값에 액세스할 때 매개 변수 앞에 달러 기호($)를 붙입니다. XSLT에서는 매개 변수 이름에 액세스할 때 달러 기호를 접두사로 붙이지만 선언할 때는 그렇지 않습니다.

함수에서는 매개 변수 목록에서 또는 함수 블록의 param 문을 사용하여 매개 변수를 선언합니다. 선택적으로 후행 매개 변수에 대한 기본값을 선언할 수 있습니다. 후행 파라미터 없이 함수를 호출하면 파라미터는 기본값을 사용합니다. 기본값을 정의하지 않으면 매개 변수 값은 기본적으로 빈 문자열로 설정됩니다.

다음 예제에서는 , , 및 라는 세 개의 매개 변수가 widthheightscale있는 라는 함수를 size정의합니다. 에 대한 scale 기본값은 1입니다. 함수 호출의 인수 목록에 인수가 scale 포함되지 않은 경우 계산은 해당 인수에 대해 기본값 1을 사용합니다. 함수의 반환 값은 요소에 포함된 , height, 변수 scalewidth곱입니다<size>.

명령문을 사용하는 대안적이지만 동등한 선언은 param 다음과 같습니다.

템플릿에 매개 변수 전달

템플릿을 호출할 때는 인수 목록에서 또는 문을 사용하여 with 템플릿에 인수를 전달합니다. 호출 환경에 제공된 매개 변수의 이름은 실제 템플릿에 정의된 매개 변수의 이름과 일치해야 합니다. 그렇지 않으면 매개 변수가 무시됩니다. 선택적으로, 템플릿에 전달하는 각 매개 변수에 대해 등호(=)와 값 표현식을 사용하여 값을 정의할 수 있습니다. 다음 예제에서는 명명된 템플릿 print-host-name 에 대한 두 호출이 동일합니다.

템플릿에서 사용되는 매개 변수 값은 템플릿이 호출되는 방식에 따라 달라집니다. 템플릿을 호출 print-host-name 하는 다음 세 가지 예는 가능한 호출 환경을 보여 줍니다.

템플릿을 호출하지만 특정 매개 변수를 포함하지 않는 경우 매개 변수는 해당 매개 변수에 대해 템플릿에 정의된 기본값을 사용합니다. 템플릿에 해당 매개 변수에 대한 기본값이 없는 경우 매개 변수 값은 기본적으로 빈 문자열로 설정됩니다. 다음 예제에서는 명명된 템플릿을 print-host-name 호출하지만 호출에 매개 변수를 포함하지 않습니다. 이 경우 명명된 템플릿은 템플릿에 정의된 매개 변수의 message 기본값을 사용하거나 기본값이 없는 경우 빈 문자열을 print-host-name 사용합니다.

템플릿을 호출하고 매개 변수를 포함하지만 호출 환경에서 매개 변수에 대한 값을 정의하지 않으면 스크립트는 매개 변수의 현재 값(이전에 초기화된 경우)을 전달합니다. 매개 변수가 선언되지 않은 경우 스크립트에서 오류가 발생합니다.

다음 예제에서는 명명된 템플릿을 print-host-name 호출하고 매개 변수를 전달 message 하지만 값은 포함하지 않습니다. 스크립트가 를 선언 및 초기화 message하고 범위가 블록에 표시되는 경우 템플릿은 현재 값 message을 사용합니다. 스크립트가 매개 변수를 선언 message 하지만 초기화하지 않는 경우 의 message 값은 빈 문자열입니다. 스크립트에서 를 선언 message하지 않으면 호출에서 오류가 발생합니다.

템플릿을 호출하고, 매개 변수를 포함하고, 매개 변수에 대한 값을 정의하면 템플릿은 제공된 값을 사용합니다. 다음 예제에서는 매개 변수와 정의된 값을 사용하여 message 명명된 템플릿을 print-host-name 호출하므로 템플릿은 새 값을 사용합니다.

예: 매개 변수 및 일치 템플릿

다음 예제는 최상위 계층 configuration 요소와 일치시킨 다음 Junos OS 관리 프로세스(mgd)에 템플릿을 하위 트리에 재귀적으로 적용하도록 지시합니다 system/host-name . 매개 변수 messagedomain 은(는) 일치하는 노드의 처리에 사용됩니다.

XSLT에 해당하는 것은 다음과 같습니다.

함수에 매개 변수 전달하기

SLAX는 SLAX 버전 1.1부터 기능을 지원합니다. 문을 사용하여 param 함수 매개 변수를 정의할 수 있지만 문을 사용하여 with 호출 환경에서 함수로 매개 변수 값을 전달할 수는 없습니다. 함수를 호출할 때 쉼표로 구분된 목록의 함수에 인수를 전달합니다. 함수 인수는 템플릿에서와 같이 이름이 아닌 위치로 함수에 전달됩니다.

함수 선언은 후행 인수에 대한 기본값을 정의할 수 있습니다. 함수 호출에 정의보다 인수 수가 적으면 모든 후행 인수에 기본값이 사용됩니다. 함수 호출에 정의보다 인수가 더 많으면 함수 호출에서 오류가 발생합니다.

다음 일치 템플릿에서 함수 호출은 원본 XML 파일의 각 graphic/dimension 요소에서 선택한 너비 및 높이 데이터를 사용합니다. 스크립트는 함수를 평가하고 문은 copy-of 결과 트리에 반환 값을 요소의 내용 <out> 으로 내보냅니다. 함수 호출에는 및 height에 대한 인수가 포함되지만 에 대한 width scale인수는 포함되지 않습니다. 기본값 1은 함수 블록 내에서 사용됩니다scale.