많은 경우 프롬프트 상에서 사용자의 입력을 받아야 할 지도 모른다. 다음은 프롬프트에서 사용자의 입력을 받아들이는 방법이다.
#!/bin/bash
echo Please, enter your name
read NAME
echo "Hi $NAME!"
이 방법은 2개 이상의 입력을 동시에 받아 들일 수 있다.
#!/bin/bash
echo Please, enter your firstname and lastname
read FN LN
echo "Hi! $LN, $FN !"
10.2. 산술 계산
명령 행이나 셸에서 다음과 같이 입력해 보자.
echo 1 + 1
뭐가 나오겠는가? 입력한 그대로 나와 버린다! 흠, 이 경우에 2라는 결과가 나온다면 뭔가 실수한 거다. 그렇다면 어떻게 하면 이 계산의 결과를 화면에서 볼 수 있을까. 방법은 간단하다. 이것이 문자열이 아니라 계산이라는 것을 인식하면 되는 것이고, 더 나아가 이 계산을 변수에 넣어 버리면 echo 명령으로 볼 수 있는 것은 인지상정인 것이다. ^^ 그렇다~! 답은 바로 저것이다!
echo $((1+1))
좀 더 논리적이고 제대로 된 방법은 저것이다. 수학적인 표현으로 한 방에 인식해 버린다. 효과는 확실하다!!
echo $[1+1]
나눗셈을 제대로 하고 싶거나 혹은 더 복잡한 수학 계산을 하고 싶다면 수학적인 계산을 bc에서 처리해 버리는 것이 현명하다. 아는 분은 다 아는 이야기이지만 모르는 분을 위해 아주 짧게 떠들어 보겠다. bc는 터미널에서 그냥 입력해서 사용할 수 있는 계산기로서, 아주 정밀한 소수점 계산까지 할 수 있고, 공학 계산도 식만 세울 수 있다면 웬만하면 풀 수 있는데다가 마치 수학 패키지를 사용하듯이, 어느 정도 간단한 스크립트 형태를 만들어 수학 계산을 할 수도 있는, 그야말로 끝내주는 물건이다. 이야기가 길어졌는데, 백견이 불여일행이라고 뭐가 다른지 한번 보기나 하자.
3/4를 계산한다고 "echo $[3/4]" 라고 입력해 보자. 원래 정상적인 답은 0.75이겠지만 여기에서는 멍청하게도 0이라고 나올 것이다. 그도 그럴 것이, 배쉬에서는 오직 정수 계산만 할 수 있기 때문이다. "echo 3/4|bc -l"라고 입력하여 이 내용을 bc로 보내면 0.75라는 답을 얻을 수 있다.
10.3. bash의 경로 찾기
이 부분은 마이크가 추가해 준 부분이다.
우리는 대개 스크립트의 첫 줄에 #!/bin/bash 라고 입력하지만, 여기에서는 다른 경로에 bash가 있을 때 그것을 찾아내는 방법을 간단히 짚고 넘어가겠다. 대부분의 시스템에서는 /bin/bash의 경로에 있겠지만, 모든 시스템이 그렇다고는 말할 수 없기 때문이다.
'find ./ -name bash' 명령은 루트 디렉토리부터 모든 디렉토리를 쓸어내리며 bash를 찾는다. 그러나 이렇게 까지 할 것은 없다. bash가 있는 위치라는 것은 대개 다음 중 하나인 것이다. 이 경로를 모두 확인해 보고도 없을 때에야 find를 써 보자. 사실, 모든 디렉토리를 확인하는 것은 좀 시간 낭비다.
ls -l /bin/bash
ls -l /sbin/bash
ls -l /usr/local/bin/bash
ls -l /usr/bin/bash
ls -l /usr/sbin/bash
ls -l /usr/local/sbin/bash
혹은 'which bash'를 사용하여 찾을 수도 있다. 취향에 따라 써 보자.
10.4. 프로그램이 되돌리는 값 받기
bash에서, 프로그램이 되돌리는 값은 특별한 변수인 $?로 받는다.
다음은 어떻게 프로그램이 되돌리는 값을 받아내느냐를 보여 주는 것이다. 나는 여기에서 dada 라는 디렉토리가 존재하지 않는다고 가정하겠다. 화면에 뭔가 나오지 않는가?
#!/bin/bash
cd /dada &> /dev/null
echo rv: $?
cd $(pwd) &> /dev/null
echo rv: $?
10.5. 명령 실행 결과 저장하기
먼저 MySQL이 깔려 있다는 가정 하에서 하는 말이지만, 이번에 설명할 간단한 스크립트는 이 시스템에 존재하는 모든 데이터 베이스의 모든 테이블 목록을 볼 수 있게 하는 것이다. 물론 mysql 명령을 사용하는 데 필요한 사용자 이름과 패스워드는 있어야 할 것이다. ^^
#!/bin/bash
DBS=`mysql -uroot -e"show databases"`
for b in $DBS ;
do
mysql -uroot -e"show tables from $b"
done
10.6. 다중 소스파일 사용하기
여러 파일에 걸쳐 명령 소스를 입력하여 실행할 수도 있다.
필자는 이 부분을 그냥 알아서 해 보라고 비워 두었고 아직까지 채울 기미가 보이지를 않지만..... 뭐, 말하자면 간단하다. 예컨대, 인터넷에서 원하는 만화 그림 파일을 매일 아침 다운로드 받는 스크립트가 있다고 가정하자. 이 만화 그림을 매일 바탕 화면에 깔아 놓고 싶다면 이 내용을 새로운 스크립트에 통째로 집어 넣어도 상관 없겠지만, 원하는 그림을 바탕 화면에 자동으로 깔아 놓는 스크립트에서 이 그림을 다운받는 스크립트를 불러들여 실행해도 아무 상관이 없다는 뜻이다. 이와 같은 다중 소스파일은 다른 프로그램에서도 같은 기능을 또 사용할 때 새 프로그램 안에서 불러 들이는 것 만으로도 충분히 제 기능을 하기 때문에 편리하게 이용할 수 있다.
10. Misc
10.1. read로 사용자 입력 받기
많은 경우 프롬프트 상에서 사용자의 입력을 받아야 할 지도 모른다. 다음은 프롬프트에서 사용자의 입력을 받아들이는 방법이다.
이 방법은 2개 이상의 입력을 동시에 받아 들일 수 있다.
10.2. 산술 계산
명령 행이나 셸에서 다음과 같이 입력해 보자.
echo 1 + 1
뭐가 나오겠는가? 입력한 그대로 나와 버린다! 흠, 이 경우에 2라는 결과가 나온다면 뭔가 실수한 거다. 그렇다면 어떻게 하면 이 계산의 결과를 화면에서 볼 수 있을까. 방법은 간단하다. 이것이 문자열이 아니라 계산이라는 것을 인식하면 되는 것이고, 더 나아가 이 계산을 변수에 넣어 버리면 echo 명령으로 볼 수 있는 것은 인지상정인 것이다. ^^ 그렇다~! 답은 바로 저것이다!
echo $((1+1))
좀 더 논리적이고 제대로 된 방법은 저것이다. 수학적인 표현으로 한 방에 인식해 버린다. 효과는 확실하다!!
echo $[1+1]
나눗셈을 제대로 하고 싶거나 혹은 더 복잡한 수학 계산을 하고 싶다면 수학적인 계산을 bc에서 처리해 버리는 것이 현명하다. 아는 분은 다 아는 이야기이지만 모르는 분을 위해 아주 짧게 떠들어 보겠다. bc는 터미널에서 그냥 입력해서 사용할 수 있는 계산기로서, 아주 정밀한 소수점 계산까지 할 수 있고, 공학 계산도 식만 세울 수 있다면 웬만하면 풀 수 있는데다가 마치 수학 패키지를 사용하듯이, 어느 정도 간단한 스크립트 형태를 만들어 수학 계산을 할 수도 있는, 그야말로 끝내주는 물건이다. 이야기가 길어졌는데, 백견이 불여일행이라고 뭐가 다른지 한번 보기나 하자.
3/4를 계산한다고 "echo $[3/4]" 라고 입력해 보자. 원래 정상적인 답은 0.75이겠지만 여기에서는 멍청하게도 0이라고 나올 것이다. 그도 그럴 것이, 배쉬에서는 오직 정수 계산만 할 수 있기 때문이다. "echo 3/4|bc -l"라고 입력하여 이 내용을 bc로 보내면 0.75라는 답을 얻을 수 있다.
10.3. bash의 경로 찾기
이 부분은 마이크가 추가해 준 부분이다.
우리는 대개 스크립트의 첫 줄에 #!/bin/bash 라고 입력하지만, 여기에서는 다른 경로에 bash가 있을 때 그것을 찾아내는 방법을 간단히 짚고 넘어가겠다. 대부분의 시스템에서는 /bin/bash의 경로에 있겠지만, 모든 시스템이 그렇다고는 말할 수 없기 때문이다.
'find ./ -name bash' 명령은 루트 디렉토리부터 모든 디렉토리를 쓸어내리며 bash를 찾는다. 그러나 이렇게 까지 할 것은 없다. bash가 있는 위치라는 것은 대개 다음 중 하나인 것이다. 이 경로를 모두 확인해 보고도 없을 때에야 find를 써 보자. 사실, 모든 디렉토리를 확인하는 것은 좀 시간 낭비다.
ls -l /bin/bash
ls -l /sbin/bash
ls -l /usr/local/bin/bash
ls -l /usr/bin/bash
ls -l /usr/sbin/bash
ls -l /usr/local/sbin/bash
혹은 'which bash'를 사용하여 찾을 수도 있다. 취향에 따라 써 보자.
10.4. 프로그램이 되돌리는 값 받기
bash에서, 프로그램이 되돌리는 값은 특별한 변수인 $?로 받는다.
다음은 어떻게 프로그램이 되돌리는 값을 받아내느냐를 보여 주는 것이다. 나는 여기에서 dada 라는 디렉토리가 존재하지 않는다고 가정하겠다. 화면에 뭔가 나오지 않는가?
10.5. 명령 실행 결과 저장하기
먼저 MySQL이 깔려 있다는 가정 하에서 하는 말이지만, 이번에 설명할 간단한 스크립트는 이 시스템에 존재하는 모든 데이터 베이스의 모든 테이블 목록을 볼 수 있게 하는 것이다. 물론 mysql 명령을 사용하는 데 필요한 사용자 이름과 패스워드는 있어야 할 것이다. ^^
10.6. 다중 소스파일 사용하기
여러 파일에 걸쳐 명령 소스를 입력하여 실행할 수도 있다.
필자는 이 부분을 그냥 알아서 해 보라고 비워 두었고 아직까지 채울 기미가 보이지를 않지만..... 뭐, 말하자면 간단하다. 예컨대, 인터넷에서 원하는 만화 그림 파일을 매일 아침 다운로드 받는 스크립트가 있다고 가정하자. 이 만화 그림을 매일 바탕 화면에 깔아 놓고 싶다면 이 내용을 새로운 스크립트에 통째로 집어 넣어도 상관 없겠지만, 원하는 그림을 바탕 화면에 자동으로 깔아 놓는 스크립트에서 이 그림을 다운받는 스크립트를 불러들여 실행해도 아무 상관이 없다는 뜻이다. 이와 같은 다중 소스파일은 다른 프로그램에서도 같은 기능을 또 사용할 때 새 프로그램 안에서 불러 들이는 것 만으로도 충분히 제 기능을 하기 때문에 편리하게 이용할 수 있다.
Recent Posts
Archive Posts
Tags