Bash:如何正确接受用户输入?

Bash:如何正确接受用户输入?

我在网上找不到示例,但我确信我见过 shell 编码器用来${1:--}接受用户输入。这是一个例子:

#!/bin/bash

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

然后,运行它:

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

我的问题是: using"${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

相关内容