セットで提供bashは同時に、変数の特定の修飾子を調べて、変更することができます。これらの修飾子は、テストに変数が上に配置されていない簡単な方法を提供し、次の表の変数に出力する結果:
修飾子 |
説明 |
使用 |
$ {変数:-word} |
変数が設定され、空でない、値が返され、そうでない場合はワード、変数定数の値。 |
変数が定義されていないなど、デフォルト値に戻ります。 |
$ {可変ワード} |
変数セット、変数値を変数値の値がnullであっても、返された場合、変数は、リターン・ワード、変数定数の値に設定されていません。 |
変数は、デフォルト値に戻ります設定されていません。 |
$ {変数:=ワード} |
変数が設定され、空で、値が返され、それ以外の場合は、変数ワードに設定され、リターン・ワード。 |
変数が定義されていない場合は、デフォルト値に設定されています。 |
$ {変数=ワード} |
変数は、その後、設定された変数の単語を設定し、リターン・ワード、および変数がNULLに設定されている場合、NULL値は同じ変数が、返されていません。それ以外の場合は、変数値、変数そのまましばらく。 |
変数が設定されていない場合は、デフォルト値に設定されています。 |
$ {変数:+ワード} |
変数が設定され、空でない、リターン・ワードは、そうでない場合はnull、可変定数の値を返しています。 |
テストのために変数が存在します。 |
$ {変数+ワード} |
変数が(でもヌル)、そしてそれ以外の場合は、言葉を返す空に設定されています。 |
テスト変数に使用が設定されています。 |
$ {変数:?単語} |
変数が設定され、空でない、値が返され、そうでなければ表示された単語は、シェルを終了します。 |
言葉が空の場合、印刷「パラメータnullまたは設定されていない」未定義の変数のエラーをキャプチャに起因します。 |
$ {変数:オフセット} |
最後まで可変のオフセット開始位置から撮影。 |
|
$ {変数:オフセット:長さ} |
可変長文字のオフセット位置から取るために始めます。 |
|
#${variable:-word}的示例,其C语言表示形式为:
# if (NULL == variable)
# return word;
# else
# return $variable;
[root@xieqichao ~]# unset var_name #将变量var_name置为空。
[root@xieqichao ~]# var_name=
[root@xieqichao ~]# echo ${var_name:-NewValue} #var_name为空,因此返回NewValue
NewValue
[root@xieqichao ~]# echo $var_name #var_name的值未变化,仍然为空。
[root@xieqichao ~]# var_name=OldValue #给var_name赋值。
[root@xieqichao ~]# echo ${var_name:-NewValue} #var_name非空,因此返回var_name的原有值。
OldValue
[root@xieqichao ~]# echo $var_name #var_name的值未变化,仍然OldValue。
OldValue
#${variable-word}的示例,其伪码表示形式为:
# if (variable is NOT set)
# return word;
# else
# return $variable;
[root@xieqichao ~]# unset var_name #取消该变量var_name的设置。
[root@xieqichao ~]# echo ${var_name-NewValue} #var_name为空,因此返回NewValue
NewValue
[root@xieqichao ~]# echo $var_name #var_name的值未变化,仍然为空。
[root@xieqichao ~]# var_name=OldValue #给var_name赋值,即便执行var_name=,其结果也是一样。
[root@xieqichao ~]# echo ${var_name-NewValue} #var_name非空,因此返回var_name的原有值。
OldValue
[root@xieqichao ~]# echo $var_name #var_name的值未变化,仍然OldValue。
OldValue
#${variable:=word}的示例,其C语言表示形式为:
# if (NULL == variable) {
# variable=world;
# return word;
# } else {
# return $variable;
# }
[root@xieqichao ~]# unset var_name #将变量var_name置为空。
[root@xieqichao ~]# var_name=
[root@xieqichao ~]# echo ${var_name:=NewValue} #var_name为空,设置变量为NewValue同时返回NewValue。
NewValue
[root@xieqichao ~]# echo $var_name #var_name的值已经被设置为NewValue。
NewValue
[root@xieqichao ~]# var_name=OldValue #给var_name赋值。
[root@xieqichao ~]# echo ${var_name:=NewValue} #var_name非空,因此返回var_name的原有值。
OldValue
[root@xieqichao ~]# echo $var_name #var_name的值未变化,仍然OldValue。
OldValue
#${variable=word}的示例,其伪码表示形式为:
# if (variable is NOT set) {
# variable=world;
# return word;
# } else if (variable == NULL) {
# return $variable;
# } else {
# return $variable;
# }
[root@xieqichao ~]# unset var_name #取消该变量var_name的设置。
[root@xieqichao ~]# echo ${var_name=NewValue} #var_name未被设置,设置变量为NewValue同时返回NewValue。
NewValue
[root@xieqichao ~]# echo $var_name #var_name的值已经被设置为NewValue。
NewValue
[root@xieqichao ~]# var_name= #设置变量var_name,并给该变量赋空值。
[root@xieqichao ~]# echo ${var_name=NewValue} #var_name被设置,且为空值,返回var_name的原有空值。
[root@xieqichao ~]# echo $var_name #var_name的值未变化,仍未空值。
[root@xieqichao ~]# var_name=OldValue #给var_name赋值。
[root@xieqichao ~]# echo ${var_name=NewValue} #var_name非空,因此返回var_name的原有值。
OldValue
[root@xieqichao ~]# echo $var_name #var_name的值未变化,仍然OldValue。
OldValue
#${variable:+word}的示例,其C语言表示形式为:
# if (NULL != variable)
# return word;
# else
# return $variable;
[root@xieqichao ~]# var_name=OldValue #设置变量var_name,其值为非空。
[root@xieqichao ~]# echo ${var_name:+NewValue} #由于var_name有值,因此返回NewValue
NewValue
[root@xieqichao ~]# echo $var_name #var_name的值仍然为远之OldValue
OldValue
[root@xieqichao ~]# unset var_name #将var_name置为空值。
[root@xieqichao ~]# var_name=
[root@xieqichao ~]# echo ${var_name:+NewValue} #由于var_name为空,因此返回null。
[root@xieqichao ~]# echo $var_name #var_name仍然保持原有的空值。
#${variable+word}的示例,其伪码表示形式为:
# if (variable is set)
# return word;
# else
# return $variable;
[root@xieqichao ~]# var_name=OldValue #设置变量var_name,其值为非空。
[root@xieqichao ~]# echo ${var_name+NewValue} #由于var_name有值,因此返回NewValue
NewValue
[root@xieqichao ~]# echo $var_name #var_name的值仍然为远之OldValue
OldValue
[root@xieqichao ~]# unset var_name #取消对变量var_name的设置。
[root@xieqichao ~]# echo ${var_name+NewValue} #返回空值。
[root@xieqichao ~]# echo $var_name #var_name仍未被设置。
#${variable:?word}的示例,其C语言表示形式为:
# if (NULL != variable) {
# return variable;
# } else {
# if (NULL != word)
# return "variable : word";
# else
# return "parameter null or not set";
# }
[root@xieqichao ~]# var_name=OldValue #设置变量var_name,其值为非空。
[root@xieqichao ~]# echo ${var_name:?NewValue} #由于var_name有值,因此返回变量的原有值
OldValue
[root@xieqichao ~]# unset var_name #将var_name置为空值。
[root@xieqichao ~]# var_name=
[root@xieqichao ~]# echo ${var_name:?NewValue} #由于var_name为空,因此返回word。
-bash: var_name: NewValue
[root@xieqichao ~]# echo $var_name #var_name仍然保持原有的空值。
[root@xieqichao ~]# echo ${var_name:?} #如果word为空,返回下面的输出。
-bash: var_name: parameter null or not set
#${variable:offset}示例:
[root@xieqichao ~]# var_name=notebook
[root@xieqichao ~]# echo ${var_name:2}
tebook
[root@xieqichao ~]# echo ${var_name:0} #如果offset为0,则取var_name的全部值。
notebook
${variable:offset:length}示例:
[root@xieqichao ~]# var_name=notebook
[root@xieqichao ~]# echo ${var_name:0:4}
note
[root@xieqichao ~]# echo ${var_name:4:4}
book