728x90

$?

ㄴ 마지막 명령어의 종료 상태를 나타낸다.

 

마지막 명령어의 종료 상태가 스크립트의 종료 상태가 된다.

 

exit로 끝났을 경우에는, 마지막으로 실행된 명령어(exit 자신을 제외하고) 종료 상태가 스크립트의 종료 상태가 된다.

ㄴ 보편적으로 0은 성공 1~ 255까지의 숫자는 에러를 나타낸다.

 

#

ㄴ 주석

 

;

ㄴ 명령어 구분자. 두개 이상의 명령어를 한 줄에서 같이 쓸 수 있게 해줍니다.

 

;;

ㄴ case 옵션 종료자. [이중 세미콜론]

 

case "$variable" in

abc) echo "$variable = abc" ;;

xyz) echo "$variable = xyz" ;;

esac

 

 

"점"(dot) 명령어. [마침표] source 명령어와 동일합니다(예 11-14 참고). 이 명령어는 bash 내장 명령(builtin)입니다.

"점"(dot)이 정규 표현식(reqular expression)으로 해석될 때는, 한 개의 문자와 일치됩니다.

또다른 문맥에서는 그냥 ls 라고 쳤을 때, 보이지 않는 "숨김" 파일을 나타내는 파일명 접두어로도 쓰입니다.

\ (이스케이프 escape)

ㄴ \X 하면 X 문자를 "이스케이프" 시키고, 'X' 라고 "쿼우팅" 시키는 것과 동일한 효과를 갖습니다. 

 

/

ㄴ 파일명 경로 구분자

 

`

ㄴ 명령어 치환 (백틱(backtics)

 

: (null command)

ㄴ 쉘의 "NOP"(아무 동작도 않함)에 해당합니다. 쉘 내장 명령인 true의 동의어 라고도 볼 수 있습니다.

주의할 점은 :은 bash 내장 명령이기 때문에 종료 상태는 0 이라는 것 입니다.

!

ㄴ 테스트나 종료 상태의 의미를 반대나 부정해준다.

 

*

ㄴ 와일드 카드 [별표]  * 문자는 정규표현식에서 0개 이상의 문자를 나타내는것과 동일하게 파일명 확장(globbing)에서 "와일드 카드" 처럼 쓰입니다.

 

?

ㄴ 와일드 카드 (하나의 문자) ? 문자는 확장 정규 표현식에서 한 문자를 나타내는 것과 마찬가지로 글로빙(globbing)에서 파일명 확장을 나타내는 한 문자짜리 "와일드 카드"의 역할을 합니다.

 

$

ㄴ 변수 치환 var1=5 , var2=23skidoo

echo $var1 # 5

echo $var2 # 23skidoo

 

${}

ㄴ 매개변수 치환

 

$*, $@

ㄴ 위치(positional) 매개변수

 

()

{xxx,yyy,zzz...}

{} 

ㄴ 코드블럭 [중괄호] "인라인 그룹"이라고도 부르는 중괄호 한 쌍은 실제로 익명의 함수를 만들어 냅니다만 보통의 함수와 달리 코드블럭 안의 변수들을 스크립트의 다른 곳에서 볼 수가 있습니다.

{ local a; a= 123: }

\;

 

[]

ㄴ 테스트 [는 쉘 내장 명령인 test와 동의어로서, 외부 명령어인 /usr/bin/test의 링크가 아니다.

 

[[ ]]

ㄴ 테스트.

 

(( ))

ㄴ 정수 확장 정수표현식을 확장하고 평가해줌

 

|

ㄴ 여러 명령어들을 연결하는 방법으로써, 한명령어의 출력을 다음 명령어나 쉘에게 전달

 

>|

ㄴ 강제 ㅈ지향

 

&

ㄴ 작업을 백그라운드로 돌리기 명령어 뒤에 &를 붕텨주면 백그라운드로 실행됩니다.

 

ㄴ 홈디렉토리

 

~+

ㄴ 현재 작업디렉토리

 

~-

ㄴ 바로 전 작업 디렉토리

 

-

표준입력(stdin)과 표준출력(stdout) 서로간의 재지향.

 

 

 

 

 

 

 

728x90

'쉘스크립트' 카테고리의 다른 글

8~/ 9~/ 연산자, 변수 재검토  (0) 2022.03.03
7~ 테스트  (0) 2022.03.03
6~ / #쿼우팅  (0) 2022.03.02
5. / # 변수와 매개변수 소개  (0) 2022.03.02
1-1~2 소개 , #!  (0) 2022.03.02
728x90

[ Bash : Bourne-Again Shell ]

 

내부 명령(built in) 

built in(고유의, 붙박이의)

 

내부 명령은 시스템 명령어와 이름이 같을수도 있지만 이런 경우 Bash가 내부적으로 다시 구현해놓은것

ex) echo, read, print, exit .. 등등

 

스크립트 명령어

 

4 (read) 2 (write) 1 (excute)

 

chmod 555 scriptname (아무나 읽고/실행 할 수 있게) 

chmod +rx scriptname (아무나 읽고/실행 할 수 있게)

chmod u+rx scriptname (스크립트 소유자만 읽고/실행할 수 있게)

 

 

$UID # 기본적으로 UID가 0인 유저만이 루트 권한을 갖는다.

 

if 문 조건식

[ -z ] : 문자열의 길이가 0이면 참
[ -n ] : 문자열의 길이가 0이 아니면 참


[ -eq ] : 값이 같으면 참
[ -ne ] : 값이 다르면 참
[ -gt ] :  값1 > 값2
[ -ge ] : 값1  >= 값2
[ -lt ] : 값1 < 값2
[ -le ] : 값1 <= 값2


[ -a ] : &&연산과 동일 and 연산
[ -o ] : ||연산과 동일 xor 연산


[ -d ] : 파일이 디렉토리면 참
[ -e ] : 파일이 있으면 참
[ -L ] : 파일이 심볼릭 링크면 참
[ -r ] : 파일이 읽기 가능하면 참
[ -s ] : 파일의 크기가 0 보다 크면 참
[ -w ] : 파일이 쓰기 가능하면 참
[ -x ] : 파일이 실행 가능하면 참
[ 파일1 -nt 파일2 ]  : 파일1이 파일2보다 최신파일이면 참
[ 파일1 -ot 파일2 ]  : 파일1이 파일2보다 이전파일이면 참
[ 파일1 -ef 파일2 ] : 파일1이 파일2랑 같은 파일이면 참

#! 스크립트의 제일 앞에서 이 파일이 어떤 해석기의 명령어 집합인지 알려주는 역할

 #! 바로 뒤에 나오는 것은 경로명으로, 스크립트에 들어있는 명령어들을 해석할 프로그램의 위치를 나타내는데 그 프로그램이 쉘인지, 프로그램 언어인지, 유틸리티인지를 나타냅니다. 이 명령어 해석기가 주석은 무시하면서 스크립트의 첫 번째 줄부터 명령어들을 실행시킵니다.

 

ex) !/bin/bash

 

[매개변수 개수 체크 로직]

if [ $# -ne 원하는_매개변수_갯수 ]
then
  echo "사용법: `basename $0` 어쩌구저쩌구"
  exit $WRONG_ARGS
fi
728x90

'쉘스크립트' 카테고리의 다른 글

8~/ 9~/ 연산자, 변수 재검토  (0) 2022.03.03
7~ 테스트  (0) 2022.03.03
6~ / #쿼우팅  (0) 2022.03.02
5. / # 변수와 매개변수 소개  (0) 2022.03.02
2.1~2.2 / 3. / 4. # 기초단계 종료상태 특수문자  (0) 2022.03.02

+ Recent posts