Bash 매뉴얼, 섹션 6.5 쉘 산술
expr1 , expr2
comma
쉼표 연산자는 무엇을 합니까?
expr1
expr2
sum은 산술식 인가요 ?
답변1
,
목록 연산자입니다.
산술 표현식 목록은 왼쪽에서 오른쪽으로 평가되며 마지막 표현식 결과가 반환 값이 됩니다.
$ echo "$(( a=1, ++a, ++a ))"
3
bash-2.04-devel에 목록 ,
연산자가 추가되었습니다(사전/사후 증가/감소 연산자와 함께).
당신은 읽고 싶을 수도 있습니다expr.c
다른 연산자의 구현 방법과 해당 기능을 확인하세요.expcomma()
,
운영자를 위해 .
답변2
불다
쉼표 연산자는 LESS=+/'expr1 , expr2' man bash
bash( )에서 작동합니다.
expr1, expr2
쉼표
그 목적에 대해서는 다른 설명이 없습니다.
이를 위해 우리는 읽어야합니다"C 언어"(모든 산술 연산자의 탄생지)에 대한 설명.
예(위 링크에 표시됨)(두 번째 값은 5임):
$ echo "$(( (t=3, t+2) )) $t"
5 3
또는 더 간단하게:
$ echo "$(( t=3, t+2 )) $t"
5 3
예, 각 요소를 쉼표로 구분하세요.표현일 수도 있다:
1313 expression:
assignment-expression
expression , assignment-expression
POSIX
실제로 POSIX아니요쉼표 연산자를 포함합니다.
표: 선택된 ISO C 표준 연산자 및 제어 흐름 키워드
아니면 다음을 시도해 보세요.
$ dash -c 'echo $(( t=3,t+2 ))'
dash: 1: arithmetic expression: expecting EOF: " t=3,t+2 "
$ bash -c 'echo $(( t=3,t+2 ))'
5
IBM이 보고서에서 확인한 바와 같이AIX 및 POSIX 쉘 페이지(강조):
모든 적분 연산자,밖의... 및 쉼표(,)가 지원됩니다.
그러나 AIX에서도 IBM은 쉼표 연산자를 지원한다고 주장합니다.ksh93 쉘에서/usr/bin/ksh93
단항 +, ++, -- 및 ?: 구문(예: "x ? y : z")과 ,(쉼표) 연산자를 포함하여 더 많은 산술 연산자를 사용할 수 있습니다.
결론적으로:
dash, ksh do not have a comma operator.
ksh93 may have a comma operator.
bash, zsh do have a comma operator.