C나 C++  혹은 VB(Visual Basic)을 사용하였던 사람들에게는 if만큼 쉬운 문장이 아닐수 없다.


if(조건) 

참일시액션

else

아닐시 액션



다중 조건 일경우


if(조건)

참일시 액션

else if(첫번째 if가 참이 아닐시 두번째 조건 확인)

참일시 액션

else

위에 두 if문이 참이 아닐시 액션


으로 이루어지며 매우 간단하며 하드 코딩의 시초가 된다. 모든것을 조건문으로 해결할수 있으며 


디버깅 방식 중 하나로 분류 되기도 한다. 


Shell을 다시 시작하자

맨 첫줄에 #!/bin/sh


변수


변수를 적을때 그냥 변수명만 적으면 된다. (자바스크립트에서는 var라고도 명시하였지만 그럴 필요가 없다.)

NULL로초기화 하고 다음에 값을 할당시에는


Temp= 로 설정 한다.   값할당에는 = 사용하게 되며 이 사이에 공백이 있으면 안된다. 


temp=TEMP        O

temp = TEMP      X

temp="TEMP A"   O


변수명과 =의 사이에는 절대 떨어져선 안된다. 


변수의 내용을 출력하기 위해선 echo 를 이용하며 $를 사용한다.


기본 터미널에서 echo $SHELL 을 입력시 SHELL변수를 불러서 현재 쉘을 확인할수 있듯이


echo $temp 를 할시에는 TEMP 가 출력됨을 확인 할수 있다. 


기본 예제 4 (Variable.sh)


#!/bin/sh


txtList=*.txt


echo $txtList


결과 a.txt b.txt

//같은 폴더 내에 a.txt b.txt파일이 있는 상태에서 



재 할당 도 가능 하다

#!/bin/sh

Process="aux"

Process="Riven"

echo ps-$Process   -> 결과값 ps-Riven 


재할당이 가능


재할당이 불가능하게 하기 위해선 상수로 선언할수 있는데 readonly 라는 키워드를 쓴다. (대문자 Readonly는 안된다.)


#!/bin/sh

Process="aux"

readonly Process

Process="Riven"

echo ps-$Process  -> 결과값  Process : is read only 라는 에러가 나타난다.



#!/bin/sh

Process="aux"

unset Process

echo ps-$Process   -> 결과값 ps- 


unset은 변수를 제거한다. Process= 상태로 만들어 버린다.



C언어에서 scanf

C++  cin>> 

java에서 System.in  Scanner등있고 쉘에선


read라는 키워드를 사용 한다.


기본 예제 4 (read.sh)



#!/bin/sh


echo "First ps Option "

read option1


echo "second input ps"

read option2 


ps $option1


echo "Second Input ps "


sleep 2


ps $option2 


결과는 첫번째 입력은 그냥  엔터 2번째 입력은 -aux로 입력했을시 두개의 결과를 첫번째 ps 를 보여주고 2초뒤에 ps -aux 를 보여준다.




+ Recent posts