본문 바로가기
리눅스

쉘 명령편집기능

by ho-bolt 2021. 10. 26.

 

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 

728x90

'리눅스' 카테고리의 다른 글

명령어 , 파일디스크립터, 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

댓글