BASH中关于变量内替换详解

#!/bin/bash
#=================================================================
#         Copyright © 2016 by Abodu, All Rights Reserved.
# FNAME: bash_variableSet_example.sh
# AUTHR: Liu Dongguo
# CREAT: 2016-06-20 11:27:09
# ENCOD: UTF-8 Without BOM
# VERNO: 1.0.0
# UPLMT: 2016-06-20 13:15:46
#=================================================================
#${variable:-word}的示例 #[{1
#其C语言表示形式为:
#if (NULL == variable)
#   return word;
#else
#   return $variable;
#fi
unset var_name                #将变量var_name置为空。
var_name=
echo ${var_name:-NewValue}    #var_name为空,因此返回NewValue
#NewValue
echo $var_name                #var_name的值未变化,仍然为空。

var_name=OldValue             #给var_name赋值。
echo ${var_name:-NewValue}    #var_name非空,因此返回var_name的原有值。
#OldValue
echo $var_name                #var_name的值未变化,仍然OldValue。
#OldValue

#${variable-word}的示例 #[{1
#其伪码表示形式为:
#if (variable is NOT set)
#   return word;
#else
#   return $variable;
#fi
unset var_name                #取消该变量var_name的设置。
echo ${var_name-NewValue}     #var_name为空,因此返回NewValue
#NewValue
echo $var_name                #var_name的值未变化,仍然为空。

var_name=OldValue             #给var_name赋值,即便执行var_name=,其结果也是一样。
echo ${var_name-NewValue}     #var_name非空,因此返回var_name的原有值。
#OldValue
echo $var_name                #var_name的值未变化,仍然OldValue。
#OldValue

#${variable:=word}的示例 #[{1
#其表示形式为:
#if (NULL == variable)
#   variable=world;
#   return word;
#else 
#   return $variable;
#fi

unset var_name                #将变量var_name置为空。
var_name=
echo ${var_name:=NewValue}    #var_name为空,设置变量为NewValue同时返回NewValue。
#NewValue
echo $var_name                #var_name的值已经被设置为NewValue。
#NewValue
var_name=OldValue             #给var_name赋值。
echo ${var_name:=NewValue}    #var_name非空,因此返回var_name的原有值。
#OldValue
echo $var_name                #var_name的值未变化,仍然OldValue。
#OldValue

#${variable=word}的示例 #[{1
#其伪码表示形式为:
#if (variable is NOT set) {
#   variable=world;
#   return word;
#} else if (variable == NULL) {
#   return $variable;  //variable is NULL
#} else {
#   return $variable;
#}
unset var_name                #取消该变量var_name的设置。
echo ${var_name=NewValue}     #var_name未被设置,设置变量为NewValue同时返回NewValue。
#NewValue
echo $var_name                #var_name的值已经被设置为NewValue。
#NewValue
var_name=                     #设置变量var_name,并给该变量赋空值。
echo ${var_name=NewValue}     #var_name被设置,且为空值,返回var_name的原有空值。

echo $var_name                #var_name的值未变化,仍未空值。

var_name=OldValue             #给var_name赋值。
echo ${var_name=NewValue}     #var_name非空,因此返回var_name的原有值。
#OldValue
echo $var_name                #var_name的值未变化,仍然OldValue。
#OldValue

#${variable:+word}的示例 #[{1
#其C语言表示形式为:
#if (NULL != variable)
#   return word;
#else
#   return $variable;

var_name=OldValue             #设置变量var_name,其值为非空。
echo ${var_name:+NewValue}    #由于var_name有值,因此返回NewValue
#NewValue
echo $var_name                #var_name的值仍然为远之OldValue
#OldValue
unset var_name                #将var_name置为空值。
var_name=
echo ${var_name:+NewValue}    #由于var_name为空,因此返回null。
echo $var_name                #var_name仍然保持原有的空值。

#${variable+word}的示例 #[{1
#其伪码表示形式为
#if (variable is set)
# return word;
#else
# return $variable;
#fi
var_name=OldValue             #设置变量var_name,其值为非空。
echo ${var_name+NewValue}     #由于var_name有值,因此返回NewValue
#NewValue
echo $var_name                #var_name的值仍然为远之OldValue
#OldValue
unset var_name                #取消对变量var_name的设置。
echo ${var_name+NewValue}     #返回空值。
echo $var_name                #var_name仍未被设置。

#${variable:?word}的示例 #[{1
#其C语言表示形式为:
# if (NULL != variable) {
#   return variable;
#   } else {
#   if (NULL != word)
#   return "variable : word";
# else
#   return "parameter null or not set";
#   }
var_name=OldValue             #设置变量var_name,其值为非空。
echo ${var_name:?NewValue}    #由于var_name有值,因此返回变量的原有值
#OldValue
unset var_name                #将var_name置为空值。
var_name=
echo ${var_name:?NewValue}    #由于var_name为空,因此返回word。
#-bash: var_name: NewValue
echo $var_name                #var_name仍然保持原有的空值。

echo ${var_name:?word}            #如果word为空,返回下面的输出。
#-bash: var_name: parameter null or not set

#${variable:offset}示例 #[{1
var_name=notebook
echo ${var_name:2}
#tebook
echo ${var_name:0}            #如果offset为0,则取var_name的全部值。
#notebook

#${variable:offset:length}示例 #[{1
var_name=notebook
echo ${var_name:0:4}
#note
echo ${var_name:4:4}
#book

猜你喜欢

转载自blog.csdn.net/liudglink/article/details/51720050