셸 스크립팅 · 반복과 함수 · 퀴즈
퀴즈: 반복과 함수
문항 5개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.
for f in /var/log/*.log 에서 매칭되는 파일이 하나도 없으면?
- 루프가 0번 실행된다
- 패턴 문자열 자체가 한 번 전달되어 루프가 1번 돈다
- 셸이 오류를 내고 스크립트가 종료된다
- 빈 문자열이 한 번 전달된다
판정 함수가 결과를 echo yes / echo no 로 출력하면 무엇이 불편해지나요?
- if 문에서 바로 쓸 수 없고 문자열 비교를 한 번 더 해야 한다
- 출력이 느려진다
- 함수 안에서 local 을 쓸 수 없다
- 표준에러로 리다이렉트할 수 없다
재시도 함수에서 명령을 다시 실행할 때 "$@" 를 써야 하는 이유는?
- $* 보다 빠르기 때문
- $@ 만 함수 안에서 쓸 수 있기 때문
- $* 는 bash 에서 지원하지 않기 때문
- $* 는 모든 인자를 하나의 문자열로 합쳐 공백이 든 인자가 쪼개지기 때문
함수 안에서 local 없이 변수를 만들면 어떤 문제가 생기나요?
- 전역 변수가 되어 호출한 쪽의 같은 이름 변수를 덮어쓴다
- 함수가 끝나면 변수가 사라진다
- 다음 호출에서 초기화되지 않는다
- 서브셸이 만들어져 값이 전달되지 않는다
1000줄 루프 안에서 $(echo "$v" | sed 's/a/b/') 를 ${v//a/b} 로 바꾸면?
- 프로세스 생성이 사라져 눈에 띄게 빨라진다
- 결과가 달라진다
- 메모리 사용량만 줄어든다
- 차이가 없다