${1:-"..."} 구문은 첫 번째 인자가 비어 있으면 기본값을 쓰겠다는 의미다.
${1:-"..."} 에서 사용된 기호 하나하나의 역할에 대해 알아보겠다.
$ (변수/인자 참조)
- 의미: 변수나 위치 인자(스크립트에 넘긴 인자)를 꺼낼 때 사용.
- 예시 1
NAME="홍길동"
echo $NAME
출력 : 홍길동
- 예시 2
#!/bin/bash
echo "첫 번째 인자: $1"
NAME="홍길동"
echo $NAME
실행 : ./script.sh ABC
출력 :첫 번째 인자: ABC
{ } (확장 범위 묶기)
- 의미 : ${...}처럼 쓰여서 “여기 안이 하나의 변수 이름/표현”이라는 것을 명확히 함.
- 예시 1
VAR="hello"
echo ${VAR}world
- 예시 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 |
댓글