이번 포스팅에서는 따배님의 Shell Script wp 7강에 대해 정리해보겠다.
언제나 그렇듯이 영상 링크 첨부한다.
반드시 시청해보기를 바란다.
오늘의 목차이다:
- echo
- read
- printf
하나씩 살펴보자
1. echo
echo는 기본 텍스트 출력 명령어이다. 주로 쓰는 옵션으로는 두개가 있다.
echo -n: 메시지 출력후 줄바꿈을 하지 않는다.
echo -e: "\"문자를 해석하여 특별한 의미를 지정한다. (c언어 해본 사람은 알 거다.)
\n 줄바꿈, \t tab키 적용, \a 알람 발생
먼저 echo -n 을 보자
차이가 보이는가?
echo -n 을 하면 줄바꿈을 하지 않고 그 줄에 그대로 다음 명령을 기다린다.
하지만 그냥 echo "hello"를 하면 hello를 출력 후 자동으로 줄바꿈을 하여 다음 명령을 기다린다.
echo -e 는 어떻게 쓰일까?
그냥 echo로 출력하면 "hello\n linux" 출력시 문자 그대로 "hello\n linux"라고 출력한다.
그러나 echo -e를 할 시에 \n은 특정 의미를 갖게 되어서
hello
linux
라는 형식으로 바뀌어서 출력된다.
사실상 echo는 허구한날 할 수 있는 명령어고 이미 많이 해봤을 것이라 생각해서 이정도만 하겠다.
2. read
read 명령어는 텍스트의 표준 입력 방법이다. 여러 옵션을 지정할 수 있다.
read -n: 지정한 문자수만큼 입력 받는다.
read -t: 지정된 시간안에 입력받는다.
read -s: 글자가 보이지 않게 입력을 받는다.
하나씩 살펴보기에는 역시 예시가 답인 거 같다.
저러면 사실
score=80이랑 뭐가 다르냐 할수도 있는데, 실제로 다른거는 딱히 없다.
score=80 이런 방식도 결국은 읽어들이는 방식이기 때문이다.
read로 입력을 받을 때는 스페이스바를 기준으로 하나의 입력으로 계산한다.
이것이 무슨 말이냐면
read name score
라는 선언을 하면 name에 값을 하나 넣을 수 있고 score에 값을 하나 넣을 수 있다.
근데 만약 이런 가정을 해보자
두개의 입력을 받겠다고 선언을 해놓고 만약 3개의 선언을 받으면 어떻게 될까?
read name score
입력: kim 80 what
그러면 첫번째부터 스페이스바를 기준으로 하나씩 입력이 되지만 변수의 마지막을 기준으로 한번에 입력이 된다.
백문이 불여일견이니 예시를 보자.
보면 score라는 변수에 80 what이 들어갔음을 볼 수 있다.
이와같이 입력해야하는 변수보다 실제 값을 더 많이 입력했을 경우 공백을 포함하여 마지막에 저장하게 된다.
이번에는 read -t를 사용해보자
만약 -t옵션을 사용할 경우 해당 시간안에 반드시 입력을 완료하여야 한다.
3초내로 입력하지 않아서 자동으로 입력이 종료된다.
-t숫자 를 입력하면 반드시 입력한 숫자초 내로 입력을 완료하여야 한다.
read -n옵션도 보자
read -n8 이라고 하면 8글자 안으로만 입력하여야 한다.
password라는 변수에는 8글자만 들어간다.
그래서 passwo12 만 넣었더니 알아서 튕겨져 나오는 모습이다. (passwo123rd 를 넣으려고 했다)
read -s를 하면 silent 모드라고 해서 입력을 보이지 않게 받아준다.
처음에는 kim이라는 값을 name이라는 변수에 넣었다.
그리고 -s옵션을 줘서 보이지 않게 choi 라는 값을 넣었다.
결과값은 choi로 나온다.
응용을 한번 해보자
echo -n "your name: " ; read name
이 명령어는 your name 이후에 새줄쓰기를 하지 않고 바로 값을 입력받도록 하는 것이다. ";" 기호로 두가지 명령어를 구분짓는다.
3. printf
C언어를 공부해본 사람이라면 당연히 알 수 있는 것인데 printf는 서식에 맞춰서 출력을 하는 기능이다. 단순히 echo를 사용하는 것과 다르게 여러 용도로 쓰여질 수 있다.
printf는 기본적으로 새로운 줄에 작성을 해주지 않는다.
\n으로 개행을 해주어야 한다.
%s는 문자를 입력받게 하고, \t는 tab키를 누른거 같은 기능을주고, %i는 숫자를 입력받을 수 있게 해준다.(%d도 정수를 입력받음)
printf로 서식을 지정하고 특정 변수에 결과값을 집어넣고 활용하고 싶다면 하기와 같이 응용한다.
'Linux > Shell Script' 카테고리의 다른 글
[Shell Script] 8. Branching (0) | 2023.04.24 |
---|---|
[Shell Script] 6. Positional Parameters (0) | 2023.04.24 |
[Shell Script] 4. Bash shell과 Rules 2 (0) | 2023.04.20 |
[Shell Script] 3. Bash shell과 Rules (0) | 2023.04.20 |
[Shell Script] 2. Bash shell과 변수 (0) | 2023.04.20 |