我在网上找不到示例,但我确信我见过 shell 编码器用来${1:--}
接受用户输入。这是一个例子:
#!/bin/bash
var="${1:--}"
echo "$var"
然后,运行它:
$ ./test.sh "this is a test"
我的问题是: using"${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