export (부모 쉘의 있는 값을 자식 쉘 까지 가지고 가는 것)
export를 하기 전에 TEST를 출력하면 값이 나오지 않는 것을 알 수 있다.
그러나 TEST를 export 한후 자식 bash 쉘에 들어가 출력하지 값이 나온다.
매개변수 확장
{ } 를 사용
ex)
VAR="this is General Parameter"
echo ${ VAR } => 매개변수 확장 모드이다.
${#변수이름} : 변수의 문자열 길이를 출력 친
배열
${변수이름[인덱스]} : 해당 인덱스 값 출력
${변수이름[*]} : 해당 배열의 모든 값 출력
${#변수이름 [*]} : 해당 배열의 모든 값 개수 출력
배열 값들중 나눠서 출력하고 싶은 경우
${변수이름: N} : N번째 이후의 값들을 출력
${변수이름:n:m} n번째 이후의 m개의 값 출력
재정의
변수를 정의한 상태에서 매개변수 확장으로 변수를 정의해도 처음에 정의한 값 123456789가 나온다.
그러나 변수에 아무것도 넣지 않은 상태에서 값을 재정의하면 그 재정의한 값 987654321이 나온다.
즉 :=은 변수값이 존재할 경우엔 그 변수값을 출력하고 그렇지 않으면 := 오른쪽에 있는 값을 출력한다.
※여기서 VAR= 정의가 안된 것이 아니라(값이 없는 게 아니라) NULL값이 정의되어 있는 것이다.
똑같은 경우에 :=이 아닌 = 했을 경우의 결과이다. 이번엔 ${VAR="9876"}을 했는데 암것도 나오지 않았다. 즉 여기서는 VAR가 아무것도 없음이라고 정의가 되어 있어서 출력되지 않는 것이다.
즉 := 과 =의 차이는 아무것도 없음을 아무것도 없음으로 인식을 하는 건지 아닌 지의 차이이다.
이것을 해제해주는 명령어가 unset이 있다.
unset을 해주자 =도 값을 출력해준다.
${변수이름:="변수값"} : 변수 값이 존재하면 그 값을 사용
변수 값이 존재하지 않으면 매개변수 확장에 정의된 값 사용
<=: 이 있을 경우 변수 값이 존재하지 않은 경우와 선언되지 않은 경우를 같다고 본다.
${변수이름="변수값"} : 변수 값이 존재하면 그 값을 사용
변수 값이 선언되지 않으면 매개변수 확장에 정의된 값을 사용
=은 정의된 값을 사용 및 저장
${변수 이름 :+ "변수값"}
+는 저장은 하지 않고 표시만 해준다.
덮어쓰기가 안된다.
<=변수 값과 관계없이 매개변수에 주어진 값을 사용
단 변수에 값이 저장되지 않는다.
변수 값이 선언되지 않았을 경우 사용되지 않는다.
?{변수 이름? :" 변수값"} : 변숫값이 존재하면 가 값을 사용
변수값과 관계없이 매개변수 적용된 값 사용 => 저장X
'리눅스' 카테고리의 다른 글
명령어 , 파일디스크립터, GREP (0) | 2021.10.26 |
---|---|
매개변수 확장 (0) | 2021.10.26 |
퍼미션 SUID, SGID, Sticky bit (0) | 2021.10.17 |
소유권 (0) | 2021.10.17 |
사용자 생성과정 (0) | 2021.10.17 |
댓글