온라인에서 예제를 찾을 수는 없지만 사용자 입력을 받아들이는 데 사용되는 쉘 인코더를 본 것은 확실합니다 ${1:--}
. 예는 다음과 같습니다.
#!/bin/bash
var="${1:--}"
echo "$var"
그런 다음 실행하세요.
$ ./test.sh "this is a test"
내 질문은: "${1:--}"
사용자 입력을 사용하는 것과 받아들이는 것의 차이점은 무엇입니까 "$1"
?
답변1
${1:--}
매개변수 1이 없거나 매개변수가 비어 있으면 문자열 "-"로 확장됩니다.
따라서 ./test.sh ""
명령과 마찬가지로 "-" 문자열이 반환됩니다. 대부분의 경우 "-" 매개변수는 ./test.sh
유용한 기본값으로 간주되는 "또는"을 의미할 수 있습니다. 또한 매개변수가 명시적으로 설정되지 않은 경우 스크립트가 중단되지 않도록 보장합니다.stdin
stdout
답변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