"옵션", "인수" 및 "매개변수" 용어의 차이는 무엇입니까?
"옵션", "인수" 및 "매개 변수"라는 용어의 차이점은 무엇입니까?맨 페이지에서 이 용어들은 종종 상호 교환적으로 사용되는 것처럼 보입니다.
명령은 인수라는 문자열 배열로 분할됩니다.인수 0은 (일반적으로) 명령 이름, 인수 1, 명령 뒤의 첫 번째 요소 등입니다.이러한 인수를 위치 매개 변수라고 부르기도 합니다.
$ ls -la /tmp /var/tmp
arg0 = ls
arg1 = -la
arg2 = /tmp
arg3 = /var/tmp
옵션은 명령의 동작을 수정하는 문서화된1 유형의 인수입니다.-l
일반적으로 "긴"을 의미합니다.-v
장황한 -lv
두 개의 옵션이 단일 인수로 결합되어 있습니다.다음과 같은 긴 옵션도 있습니다.--verbose
getopts를 사용하여 긴 명령줄 및 짧은 명령줄 옵션 처리를 참조하십시오.이름에서 알 수 있듯이 옵션은 일반적으로 선택 사항입니다.그러나 역설적인 "필수 옵션"을 가진 일부 명령이 있습니다.
$ ls -la /tmp /var/tmp
option1= -l
option2= -a
매개 변수는 명령 또는 해당 옵션 중 하나에 정보를 제공하는 인수입니다.-o file
파일은 의 매개 변수입니다.-o
변수는 필요에 따라 할 수 .프로그램에서 가능한 값이 하드 코딩된 옵션과 달리 매개 변수는 일반적으로 그렇지 않으므로 사용자는 필요에 맞는 문자열을 자유롭게 사용할 수 있습니다.안 되는 변수를 할 수 .--
2.
$ ls -la /tmp /var/tmp
parameter1= /tmp
parameter2= /var/tmp
$ ls -l -- -a
option1 = -l
parameter1 = -a
셸 매개 변수는 셸의 컨텍스트에 값을 저장하는 모든 매개 변수입니다.여기에는 위치 매개변수(예:$1
,$2
...), 변예(예:$foo
,$bar
및 ...)는 다음과 같습니다.$@
)
마지막으로, 함수 / (저수준) 명령이라고도 하는 하위 명령이 있으며, 다음과 같이 여러 개의 개별 명령을 포함하는 "메타 명령"과 함께 사용됩니다.busybox
,git
,apt-get
,openssl
명령 앞에 명령 이 있을 수 .하위 명령 앞에 글로벌 옵션이 있고 하위 명령 뒤에 하위 명령 관련 옵션이 있을 수 있습니다.매개 변수와 달리 사용 가능한 하위 명령 목록은 명령 자체에 하드 코딩됩니다. 예:
$ busybox ls -l
command = busybox
subcommand = ls
subcommand option1 = -l
$ git --git-dir=a.git --work-tree=b -C c status -s
command = git
command option1 = --git-dir=a.git
command option2 = --work-tree=b
command option3 = -C c
subcommand = status
subcommand option1 = -s
를 들어 " 은다같다습니과음령명일부다▁like"와 같은 도 있습니다.test
,tar
,dd
그리고.find
에서 설명한 구문의 를 이에 설전 더복 구분 가석문으로 구문 할 수 .expressions
,operands
,keys
및 유사한 명령 관련 구성 요소.
또한 선택적 변수 할당 및 리디렉션은 타일 확장, 매개 변수 확장, 명령 대체, 산술 확장,그리고 다른 명령줄 매개 변수와 마찬가지로 따옴표 제거는 명령이 실제로 호출되어 인수를 전달할 때 사라졌기 때문에 내 회신에서 고려되지 않습니다.
1 물론 문서화되지 않은 옵션은 여전히 옵션이기 때문에 일반적으로 문서화된 상태로 작성했어야 합니다.
2 그러나 이중 대시 기능은 프로그램에 의해 구현되어야 합니다.
그man
" 적인유명닉령페이는종종지사다용용니합어를"라는 합니다.argument
,option
그리고.parameter
가장낮수서에준, 우는리은이 .argument
(파일 시스템 경로의) 명령어 자체를 포함하여 모든 것이 인수입니다.
셸 립 특 스 변 사 여 액 인 합 스 니 다 세 에 수 하 용 크 를 트 수 에 서 수 ▁using ▁arguments ▁the ▁in ▁you ▁variables ▁a ▁special ▁access ▁script 다 ▁shell 셸니 합 스$0
..$n
다른 언어들도 비슷한 방식으로 접근할 수 있습니다(일반적으로 다음과 같은 이름을 가진 배열을 통해).argv
).
원하는 경우 인수를 옵션으로 해석할 수 있습니다.이 작업은 구현별로 다릅니다.예를 들어 셸(예: 다음과 같은)을 직접 굴릴 수 있습니다.bash
제공된 스크립트를 사용할 수 있습니다.getopts
또는getopt
명령을 실행합니다.
이것들은 일반적으로 하이픈으로 시작하는 인수로서 옵션을 정의합니다.-
및 할 수 있습니다 및 일부 옵션은 진행 중인 인수를 매개 변수로 사용할 수 있습니다. 유능한 다보효인예파서적율예)getopt
합니다 ( ) 쇼트폼( ) 짧은형 혼합지원의식지 ( )-h
및 ) 및 긴 형 식 형 식 ( 긴 ▁) 및 ▁long ▁and--help
옵션.
일반적으로 대부분의 옵션은 0 또는 하나의 매개 변수를 사용합니다.이러한 매개 변수를 값이라고도 합니다.
되어 있습니다(예: ▁of▁inv▁the▁the(▁are시다▁code▁(니습▁supported있▁in).getopts
셸 스크립트 내).옵션이 사용된 후 남은 모든 인수는 주어진 순서가 유의할 때 일반적으로 위치 매개 변수라고 합니다(이것은 일반적으로 어떤 순서로도 제공될 수 있는 옵션과 대조적입니다.
스크립트는 위치 매개 변수를 사용하고 사용하는 방법에 따라 위치 매개 변수가 무엇인지 정의합니다.
일반적인 명령어는
$ ls -I README -l foo 'bar car' baz
인수가 . 에개 7의인 있습니다 수가는다./usr/bin/ls
,-I
,README
,-l
,foo
,bar car
,그리고.baz
로서접근수있는으로 접근 합니다.$0
을 통하여$6
.-l
그리고.-I
옵션으로 해석되며, 후자는 매개 변수(또는 값)를 가집니다.README
남은 것은 위치 매개변수(foo
,bar car
그리고.baz
).
사용되는 할 수 ( " 옵구 문분 석은사예용인제목인수변수있경다할니습목을록수거여록하을션는되예:▁option▁by(있").shift
또는set
에 로 할 수 . ) 위 매 개 변 수 만 그 다 액 할 같 스 세 수 합 니 록 있 다 도 이 과 치 음 후 남 있 고 아 ▁) 니 ▁) 합 다 ▁so ible ▁as 록 ▁the ▁that eters ▁remain 도 ▁only ▁and ▁access al 있 위 ▁are$1
..$n
.
질문에 "bash"라는 태그가 붙어 있기 때문에, 저는 bash 매뉴얼에서 관련 섹션을 찾았습니다.저는 이것들을 저의 한 문장 요약과 함께 아래 인용된 구절로 나열합니다.
논쟁들
명령 뒤에 오는 모든 것은 인수입니다.
은한셸명과 같은 셸
echo a b c
명령 자체와 인수로 구성되며 공백으로 구분됩니다.단순 명령은 가장 자주 발생하는 명령입니다.셸의 제어 연산자 중 하나에 의해 종료된 공백으로 구분된 일련의 단어일 뿐입니다(정의 참조)첫 번째 단어는 일반적으로 실행할 명령을 지정하고 나머지 단어는 해당 명령의 인수입니다.
매개변수
함수 실행 중 인수를 매개 변수라고 합니다.
함수가 실행될 때 함수에 대한 인수는 실행 중에 위치 매개 변수가 됩니다.
매개 변수는 값을 저장하는 엔티티입니다.이름, 숫자 또는 아래 나열된 특수 문자 중 하나일 수 있습니다.변수는 이름으로 표시되는 매개 변수입니다.
위치 매개 변수는 단일 숫자 0이 아닌 하나 이상의 숫자로 표시되는 매개 변수입니다.위치 매개 변수는 셸이 호출될 때 셸의 인수에서 할당되며 set builtin 명령을 사용하여 재할당할 수 있습니다.위치 매개 변수 N은 ${N} 또는 N이 한 자리 숫자로 구성된 경우 $N으로 참조될 수 있습니다.
옵션들
옵션을 정의하는 전용 섹션은 없지만 매뉴얼 전체에서 하이픈 접두사 문자라고 합니다.
-p 옵션은 출력 형식을 POSIX에서 지정한 형식으로 변경합니다.
언급URL : https://stackoverflow.com/questions/36495669/difference-between-terms-option-argument-and-parameter
'programing' 카테고리의 다른 글
응용 프로그램에 대한 실행 권한을 변경할 수 없습니다. (0) | 2023.05.13 |
---|---|
정체불명의 개발자의 앱이므로 앱을 열 수 없습니다. (0) | 2023.05.13 |
240개 이상의 요소로 구성된 어레이를 루프할 때 성능에 큰 영향을 미치는 이유는 무엇입니까? (0) | 2023.05.13 |
임의의 영숫자 문자열을 생성하려면 어떻게 해야 합니까? (0) | 2023.05.13 |
SQL Azure - 데이터베이스 간에 표 복사 (0) | 2023.05.13 |