산술연산자 쓰는 여러가지방법
1. let "n = $n +1"
2. let "n= n + 1"
3. : $((n = $n + 1))
4. : $[ n = $n + 1 ]
":" 가 없을시 Bash가 3번 4번 연산자를 명령어로 해석하려고하기때문에 : 가 필요하다.
echo -n "$n "
n=$[ $n + 1]
비트 연산자(bitwise operators). 비트 연산자는 쉘 스크립트에서 자주 쓰이지 않습니다. 이런 연산자들은 주로 포트나 소켓에서 값을 읽고 테스트하고 조작하는데 쓰입니다. "비트 조작(bit flipping)"은 C나 C++ 처럼 실행중에 비트연산을 할 수 있을 정도로 충분히 속도가 빠른 컴파일 언어가 더 알맞습니다.
비트 연산자
<<비트 왼쪽 쉬프트(쉬프트 한 번당 2를 곱하는 것과 동일함)
<<="left-shift-equal"
let "var <<= 2" 는 var를 2 비트만큼 왼쪽으로 쉬프트(4 를 곱하는 것과 동일함)
>>비트 오른쪽 쉬프트(쉬프트 한 번당 2로 나눔)
>>="right-shift-equal"(<<=와 반대)
&비트 and
&="비트 and-equal"
|비트 OR
|="비트 OR-equal"
~비트 negate
!
비트 NOT
^비트 XOR
^="비트 XOR-equal"
, 콤마 연산자(comma operator)
콤마 연산자는 두개 이상의 산술 연산을 묶어 줍니다. 이 연산자로 묶인 모든 연산은 부효과(side effects)가 생길 가능성을 가지고 평가되고 제일 마지막 연산의 결과만 리턴됩니다.
숫자 상수(Numerical Constants)
쉘 스크립트는 특별한 접두사나 표기법이 없다면 숫자를 10진수로 해석합니다.
만약에 숫자 앞에 0이 있다면 8진수(8진법)이고, 0x가 있따면 16진수(16진법)입니다.
#이 들어간 숫자는 진법#숫자로 계산됩니다.
변수를 조작하거나 확장시키기
${parameter}
ㄴ 변수인 parameter의 값이란 뜻으로써, $parameter라고 한 것과 같습니다.
${parameter_default}
ㄴ 매개변수가 세트되지 않았다면 default 사용
${parameter=default}, ${parameter:=default}
ㄴ 매개변수가 세트 되어 있지 않다면 기본값으로 세트.
두 형태는 거의 비슷하지만 :이 있을때는 위의 경우처럼 $parameter가 선언만 되고 값이 널일 경우에도 기본값으로 세트 시킨다는 차이점이 있습니다.
${parameter+alt_value}, ${parameter:+alt_value}
매개변수가 세트되어 있다면 alt_value를 쓰고 아니라면 널 스트링을 씁니다.
이 두 형태는 거의 비슷하지만 parameter가 선언되고 널일 경우에 :이 있고 없고의 차이가 나타납니다. 아래를 보세요.
변수 길이/문자열조각(substring) 삭제${#var}
문자열 길이 ($var의 문자 갯수). 배열의 경우에, ${#array}라고 하면 배열의 첫번째 요소의 길이를 알려줍니다.
참고: 예외:
- ${#*} 와 ${#@} 는 위치 매개변수의 갯수를 알려줍니다.
- 배열에 대해 ${#array[*]} 나 ${#array[@]} 라고 하면 배열 요소의 갯수를 알려줍니다.
${var#pattern}, ${var##pattern}
$pattern이 $var의 앞 부분과 가장 길거나 가장 짧게 일치하는 부분을 삭제.
${var%pattern}, ${var%%pattern}
$pattern이 $var의 뒷 부분과 가장 짧거나 가장 길게 일치하는 부분을 삭제.
변수 타입 지정: declare 나 typeset
declare나 typeset 내장 명령(이 둘은 동의어입니다.) 키워드는 변수의 특성을 제한할 수 있습니다. 이것은 몇몇 프로그래밍 언어에서 볼 수 있는 불완전한 형태의 타입 지정입니다. declare 명령어는 bash 버전 2 이후부터 가능합니다. typeset 명령어는 ksh 스크립트에서도 가능합니다.
declare/typeset 옵션
-r 읽기 전용
(declare -r var1 는 readonly var1 과 똑같이 동작합니다.)
C에서 cost 형한정어(qualifier)와 거의 비슷하고, 이런 변수의 값을 바꾸력 하면 에러 메세지가 납니다.
-i 정수
-a 배열
-f 함수
-x export
var=$value
변수 간접 참조
어떤 변수값이 다음에 나올 변수의 이름이라고 가정해봅시다. 그렇다면 그 어떤 변수로 다음 나올 변수의 값을 알아낼 수 있을까요? 이는 우리 생각처럼 제대로 동작을 하고 이를 간접 참조라고 부릅니다.
간접참조 a=\$$a
이중 소괄호 (The Double Parentheses Construct)
'쉘스크립트' 카테고리의 다른 글
10~ / 루프 (0) | 2022.03.03 |
---|---|
9~ / 변수 재검토 (0) | 2022.03.03 |
7~ 테스트 (0) | 2022.03.03 |
6~ / #쿼우팅 (0) | 2022.03.02 |
5. / # 변수와 매개변수 소개 (0) | 2022.03.02 |