bash脚本中的这些声明意味着什么:
PREFIX=${1:-daily}
PROFILE=${2:-backup}
答案 0 :(得分:2)
如果第一个参数存在,则将第一个参数的值分配给PREFIX变量,"每日"如果没有。
答案 1 :(得分:2)
这里的关键是要了解参数扩展${PARAMETER:-WORD}
语法在这里的含义,
${PARAMETER:-WORD}
If the parameter PARAMETER is unset (never was defined) or null (empty), this one
expands to WORD, otherwise it expands to the value of PARAMETER, as if it
just was ${PARAMETER}
在您的情况下,${PARAMETER}
是传递给函数或脚本的位置参数,
使用以下脚本以便更好地理解
myTestFunction() {
PREFIX=${1:-daily}
PROFILE=${2:-backup}
printf "PREFIX value %s PROFILE value %s\n" "$PREFIX" "$PROFILE"
}
myTestFunction "some" "junk"
myTestFunction
生成结果
$ bash script.sh
PREFIX value some PROFILE value junk
PREFIX value daily PROFILE value backup
另请参阅扩展的调试版本的脚本
$ bash -x script.sh
+ myTestFunction some junk
+ PREFIX=some
+ PROFILE=junk
+ printf 'PREFIX value %s PROFILE value %s\n' some junk
PREFIX value some PROFILE value junk
+ myTestFunction
+ PREFIX=daily
+ PROFILE=backup
+ printf 'PREFIX value %s PROFILE value %s\n' daily backup
PREFIX value daily PROFILE value backup
在$1
或$2
未通过时,shell如何将值替换为变量。
语法通常,默认情况下,您希望同时配置具有特定值的变量使其也可动态配置。
答案 2 :(得分:1)
这意味着,将the first argument
(如果存在),daily
分配给变量PREFIX
并分配the second argument
(如果存在),将backup
分配给变量PROFILE
例如:
$ cat file.sh
#!/bin/bash
PREFIX=${1:-daily}
PROFILE=${2:-backup}
echo $PREFIX
echo $PROFILE
对于给定的以下命令行参数,输出将如下:
$ ./file.sh
daily
backup
$ ./file.sh abc
abc
backup
$ ./file.sh abc xyz
abc
xyz