Linux와 커맨드 라인 기초

$ cat s.sh
#!/bin/bash
echo "$# $1"
$ ./s.sh a "b c" d

위와 같이 스크립트 s.sh를 인수를 붙여 실행했을 때의 출력으로 올바른 것은?

  1. A3 ./s.sh
  2. B3 a
  3. C4 a
정답과 해설 보기

정답: B. 3 a

스크립트 안에서는 $1, $2 …가 첫 번째, 두 번째 인수, $#가 인수의 수, $0이 스크립트 자신의 이름을 나타냅니다. "b c"는 큰따옴표로 감싸여 있으므로 공백을 포함한 하나의 인수가 되며, 인수는 a, b c, d의 3개입니다. 따라서 $#는 3, $1은 a이며, 출력은 3 a가 됩니다. 모든 인수를 구분을 유지한 채 다른 명령에 넘길 때는 "$@"라고 씁니다.

이 분야 연습하기 분야로 돌아가기

Linux와 커맨드 라인 기초의 다른 문제

  1. 셸 스크립트에서 위의 if 조건이 참이 되는 경우로 올바른 것은?
  2. 위의 조작 후에 디렉터리에 있는 파일로 올바른 것은?
  3. 현재 디렉터리에 있는, 실행 권한이 붙은 스크립트 run.sh를 'run.sh'라고 입력하여 실행하려고 하면 'command not found'가 되고, './run.sh'라고 입력하면 실행할 수 있었다. 이유로 올바른 것은?
  4. 위의 명령을 순서대로 실행했을 때, 두 bash -c의 출력의 조합으로 올바른 것은?
  5. Linux의 패키지 관리 시스템(Debian 계열의 apt, Red Hat 계열의 dnf 등)의 주된 역할로 올바른 것은?