Bash: 사용자 입력을 올바르게 받아들이는 방법은 무엇입니까?

Bash: 사용자 입력을 올바르게 받아들이는 방법은 무엇입니까?

온라인에서 예제를 찾을 수는 없지만 사용자 입력을 받아들이는 데 사용되는 쉘 인코더를 본 것은 확실합니다 ${1:--}. 예는 다음과 같습니다.

#!/bin/bash

var="${1:--}"
echo "$var"

그런 다음 실행하세요.

$ ./test.sh "this is a test"

내 질문은: "${1:--}"사용자 입력을 사용하는 것과 받아들이는 것의 차이점은 무엇입니까 "$1"?

답변1

${1:--}매개변수 1이 없거나 매개변수가 비어 있으면 문자열 "-"로 확장됩니다.

따라서 ./test.sh ""명령과 마찬가지로 "-" 문자열이 반환됩니다. 대부분의 경우 "-" 매개변수는 ./test.sh유용한 기본값으로 간주되는 "또는"을 의미할 수 있습니다. 또한 매개변수가 명시적으로 설정되지 않은 경우 스크립트가 중단되지 않도록 보장합니다.stdinstdout

답변2

Bash의 매개변수 확장에서 갈증 명령 인수가 수행하는 변수의 기본값을 사용할 수 있습니다. 즉, ${1:--}값이 설정되지 않았거나 비어 있는 경우에만 값이 할당됩니다. 다른 매개변수와도 작동합니다. 다음 예를 테스트해 보세요.-$1

echo "${var:-X}"   # var is not defined so X will be echoed
var=Y              # lets define var
echo "${var:-X}"   # var is defined so its value Y will be printed

관련 정보