저는 LPIC1, 시험 102를 준비하고 있습니다. 이 질문이 내 앞에 나타났고 나는 완전히 당황했습니다. 처음 퀴즈를 풀 당시에는 이 사실을 알았지만, 한 달 반이 지난 지금은 모든 것이 머릿속에서 흐려져 있습니다.
무엇인가요
산출?function a { echo $1; } ; a a b c
A.a
B.abc
택시
D.aabc
나는 "script"라는 파일을 생성하여 이 기능을 재현하려고 했습니다.
function a { echo $1;
};
a a b c
저장하고 실행 권한을 부여한 후 시도해 보세요.
$ bash script
a
$
그럼 정답은 A인데 왜 그럴까요? ;
after 를 추가해야 합니까 $1
? 두 번째는 어떤 용도 ;
로 사용되나요? 누군가 이 스크립트의 구문을 설명해 줄 수 있나요?
답변1
이러한 명령은 명령줄에서 실행되어야 합니다. 예를 들면 다음과 같습니다.
function a { echo $1; } ; a a b c
두 번째 세미콜론은 명령 목록을 다음
function a { echo $1; }
과 같이 나눕니다.
a a b c
첫 번째 명령은 첫 번째 위치 인수를 반영하는 "a"라는 함수를 생성합니다. 함수 내의 명령 목록은
후행 세미콜론 으로 끝나야 합니다echo $1
. 그렇게 하는 개행 문자가 없기 때문입니다.
(참조:man bash
-> 복합 명령 -> { list; } )두 번째 명령은
a a b c
함수(fist a)를 호출하고 위치 인수로 "ab c"를 함수에 전달합니다.
함수는 첫 번째 위치 인수만 에코하므로 정답은 "A"입니다.
답변2
a a b c
다음과 같이 번역됨command arg1 arg2 arg3
당신이 해야 할 일은 "a"인 a
첫 번째 인수( )를 반환하는 함수를 정의하는 것뿐입니다.$1
세미콜론은 중괄호를 사용하여 해당 셸에서 명령을 그룹화하는 방법에 대한 것입니다.
{ commandA ; commandB ; commandC ; ... ; commandN ; }