본문 바로가기
지식/Linux

shell script - NAME=${1:-"DEFAULT"}

by TheEC 2025. 12. 30.

${1:-"..."} 구문은 첫 번째 인자가 비어 있으면 기본값을 쓰겠다는 의미다.

${1:-"..."} 에서 사용된 기호 하나하나의 역할에 대해 알아보겠다.

$ (변수/인자 참조)

  • 의미: 변수나 위치 인자(스크립트에 넘긴 인자)를 꺼낼 때 사용.
  • 예시 1
NAME="홍길동" 
echo $NAME

     출력 : 홍길동

  • 예시 2
#!/bin/bash 
echo "첫 번째 인자: $1"
NAME="홍길동" 
echo $NAME

      실행 : ./script.sh ABC

      출력 :첫 번째 인자: ABC

 

 

{ } (확장 범위 묶기)

  • 의미 : ${...}처럼 쓰여서 “여기 안이 하나의 변수 이름/표현”이라는 것을 명확히 함.
  • 예시 1
VAR="hello"
echo ${VAR}world
      출력 : helloworld (변수 이름과 뒤의 글자를 구분).

 

  • 예시 2 (파라미터 확장)
TEXT="abcdef"
echo ${TEXT:0:3}

      출력 : abc (부분 문자열 추출)

 

 

1 (첫 번째 위치 인자)

  • 의미: 스크립트/함수에 전달된 첫 번째 인자
  • 예시 1
#!/bin/bash
echo "스크립트 이름: $0"
echo "첫 번째 인자: $1"
echo "두 번째 인자: $2"

      실행 : ./script.sh A B

      출력 : 스크립트 이름: ./script.sh

                첫 번째 인자: A

                두 번째 인자: B

  • 예시 2 (${1} 형태)
#!/bin/bash
echo "인자1: ${1}"

      실행 : ./script.sh Hello

      출력 : 인자1: Hello

 

: (콜론 – :- 연산자의 일부)

  • 의미: ${var:-word}에서 :는 “unset이거나 비었을 때”라는 조건을 추가하는 역할
  • 예시 1 – 콜론 있는 경우
#!/bin/bash
NAME=${1:-"기본이름"}
echo "$NAME"

      인자 없음: ./script.sh  (기본이름. unset이므로 기본값)

      인자 "" (빈 문자열): ./script.sh ""  (기본이름. null이라 기본값)

 

  • 예시 2 – 콜론 없는 경우
#!/bin/bash
NAME=${1-"기본이름"}
echo "$NAME"

      인자 없음: ./script.sh  (기본이름. unset이므로 기본값)

      인자 "": ./script.sh ""  (빈 문자열 출력. null이어도 기본값 안 씀)

      즉 :가 들어가면 “unset 또는 빈 문자열(null)”일 때 기본값을 쓰고, 없으면 “unset일 때만” 기본값을 쓴다.

 

- (:-의 연산자 – 기본값)

  • 의미: ${parameter:-word}에서 -는 “없으면/비었으면 대신 쓸 기본값”을 지정
  • 기본 형식
VAR=${PARAMETER:-"기본값"}

      PARAMETER가 값이 있으면 그 값을 사용하고, 없거나 비어 있으면 "기본값" 사용.

  • 예시 1 – 위치 인자에 기본값
#!/bin/bash
PROMPT=${1:-"리눅스"}
echo "$PROMPT"

      ./script.sh  (출력: 리눅스)

      ./script.sh 우분투  (출력: 우분투​)

  • 예시 2 – 일반 변수에 기본값
#!/bin/bash
echo "USER: ${USER:-"unknown"}"

      USER 환경변수가 있으면 그 값 출력하고, 없으면 unknown 출력.

 

 

정리하면 ${1:-"리눅스"}는

  • $  “변수/인자 값을 가져와라”,
  • {} “안의 표현 전체를 하나로 확장해라”,
  • 1 “첫 번째 인자”,
  • :  “unset이거나 비었는지도 체크해라”,
  • -  “그럴 경우 이 뒤 기본값을 써라”라는 의미가 합쳐진 형태이다.

'지식 > Linux' 카테고리의 다른 글

shell script - := 와 :- 의 차이  (0) 2025.12.30
ASAN - shadow memory  (0) 2025.11.28
Samba 설정  (1) 2023.12.03
Raspberry Pi - 디지털 액자 만들기  (0) 2023.06.10
Raspberry Pi - 디지털 액자 (Dynaframe)  (0) 2023.06.10

댓글