修改符 | 描述 | 用途 |
---|---|---|
${variable:-word} | 如variable被设置且非空,则返回该值,否则返回word,变量值不变。 | 如变量未定义,返回默认值。 |
${variable-word} | 如variable未被设置,则返回word,变量值不变,如果设置变量,则返回变量值,即使变量的值为空值。 | 如变量未设置,返回默认值。 |
${variable:=word} | 如variable被设置且非空,则返回该值,否则设置变量为word,同时返回word。 | 如果变量未定义,则设置其为默认值。 |
${variable=word} | 如variable未设置,则设置变量为word,同时返回word,如果variable被设置且为空,将返回空值,同时variable不变。否则返回variable值,同时variable不变。 | 如果变量未设置,则设置其为默认值。 |
${variable:+word} | 如variable被设置且非空,则返回word,否则返回null,变量值不变。 | 用于测试变量是否存在。 |
${variable+word} | 如variable被设置(即使是空值),则返回word,否则返回空。 | 用于测试变量是否设置。 |
${variable:?word} | 如variable被设置且非空,则返回该值,否则显示word,然后退出Shell。 | 如果word为空,打印"parameter null or not set" 为了捕捉由于变量未定义所导致的错误。 |
${variable:offset} | 从variable的offset位置开始取,直到末尾。 | |
${variable:offset:length} | 从variable的offset位置开始取length个字符。 |
#${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的值未变化,仍然为空。
<span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span>OldValue #给var_name赋值。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token operator">-</span>NewValue<span class="token punctuation">}</span> #var_name非空,因此返回var_name的原有值。 OldValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name的值未变化,仍然OldValue。 OldValue #$<span class="token punctuation">{</span>variable<span class="token operator">-</span>word<span class="token punctuation">}</span>的示例,其伪码表示形式为: # <span class="token keyword">if</span> <span class="token punctuation">(</span>variable is <span class="token constant">NOT</span> <span class="token keyword">set</span><span class="token punctuation">)</span> # <span class="token keyword">return</span> word<span class="token punctuation">;</span> # <span class="token keyword">else</span> # <span class="token keyword">return</span> $variable<span class="token punctuation">;</span> <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># unset var_name #取消该变量var_name的设置。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token operator">-</span>NewValue<span class="token punctuation">}</span> #var_name为空,因此返回NewValue NewValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name的值未变化,仍然为空。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span>OldValue #给var_name赋值,即便执行var_name<span class="token operator">=</span>,其结果也是一样。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token operator">-</span>NewValue<span class="token punctuation">}</span> #var_name非空,因此返回var_name的原有值。 OldValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name的值未变化,仍然OldValue。 OldValue #$<span class="token punctuation">{</span>variable<span class="token punctuation">:</span><span class="token operator">=</span>word<span class="token punctuation">}</span>的示例,其<span class="token constant">C</span>语言表示形式为: # <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token constant">NULL</span> <span class="token operator">==</span> variable<span class="token punctuation">)</span> <span class="token punctuation">{</span> # variable<span class="token operator">=</span>world<span class="token punctuation">;</span> # <span class="token keyword">return</span> word<span class="token punctuation">;</span> # <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> # <span class="token keyword">return</span> $variable<span class="token punctuation">;</span> # <span class="token punctuation">}</span> <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># unset var_name #将变量var_name置为空。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span> <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token operator">=</span>NewValue<span class="token punctuation">}</span> #var_name为空,设置变量为NewValue同时返回NewValue。 NewValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name的值已经被设置为NewValue。 NewValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span>OldValue #给var_name赋值。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token operator">=</span>NewValue<span class="token punctuation">}</span> #var_name非空,因此返回var_name的原有值。 OldValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name的值未变化,仍然OldValue。 OldValue #$<span class="token punctuation">{</span>variable<span class="token operator">=</span>word<span class="token punctuation">}</span>的示例,其伪码表示形式为: # <span class="token keyword">if</span> <span class="token punctuation">(</span>variable is <span class="token constant">NOT</span> <span class="token keyword">set</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> # variable<span class="token operator">=</span>world<span class="token punctuation">;</span> # <span class="token keyword">return</span> word<span class="token punctuation">;</span> # <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token keyword">if</span> <span class="token punctuation">(</span>variable <span class="token operator">==</span> <span class="token constant">NULL</span><span class="token punctuation">)</span> <span class="token punctuation">{</span> # <span class="token keyword">return</span> $variable<span class="token punctuation">;</span> <span class="token comment">//variable is NULL</span> # <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> # <span class="token keyword">return</span> $variable<span class="token punctuation">;</span> # <span class="token punctuation">}</span> <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># unset var_name #取消该变量var_name的设置。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token operator">=</span>NewValue<span class="token punctuation">}</span> #var_name未被设置,设置变量为NewValue同时返回NewValue。 NewValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name的值已经被设置为NewValue。 NewValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span> #设置变量var_name,并给该变量赋空值。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token operator">=</span>NewValue<span class="token punctuation">}</span> #var_name被设置,且为空值,返回var_name的原有空值。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name的值未变化,仍未空值。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span>OldValue #给var_name赋值。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token operator">=</span>NewValue<span class="token punctuation">}</span> #var_name非空,因此返回var_name的原有值。 OldValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name的值未变化,仍然OldValue。 OldValue #$<span class="token punctuation">{</span>variable<span class="token punctuation">:</span><span class="token operator">+</span>word<span class="token punctuation">}</span>的示例,其<span class="token constant">C</span>语言表示形式为: # <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token constant">NULL</span> <span class="token operator">!=</span> variable<span class="token punctuation">)</span> # <span class="token keyword">return</span> word<span class="token punctuation">;</span> # <span class="token keyword">else</span> # <span class="token keyword">return</span> $variable<span class="token punctuation">;</span> <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span>OldValue #设置变量var_name,其值为非空。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token operator">+</span>NewValue<span class="token punctuation">}</span> #由于var_name有值,因此返回NewValue NewValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name的值仍然为远之OldValue OldValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># unset var_name #将var_name置为空值。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span> <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token operator">+</span>NewValue<span class="token punctuation">}</span> #由于var_name为空,因此返回<span class="token keyword">null</span>。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name仍然保持原有的空值。 #$<span class="token punctuation">{</span>variable<span class="token operator">+</span>word<span class="token punctuation">}</span>的示例,其伪码表示形式为: # <span class="token keyword">if</span> <span class="token punctuation">(</span>variable is <span class="token keyword">set</span><span class="token punctuation">)</span> # <span class="token keyword">return</span> word<span class="token punctuation">;</span> # <span class="token keyword">else</span> # <span class="token keyword">return</span> $variable<span class="token punctuation">;</span> <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span>OldValue #设置变量var_name,其值为非空。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token operator">+</span>NewValue<span class="token punctuation">}</span> #由于var_name有值,因此返回NewValue NewValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name的值仍然为远之OldValue OldValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># unset var_name #取消对变量var_name的设置。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token operator">+</span>NewValue<span class="token punctuation">}</span> #返回空值。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name仍未被设置。 #$<span class="token punctuation">{</span>variable<span class="token punctuation">:</span><span class="token operator">?</span>word<span class="token punctuation">}</span>的示例,其<span class="token constant">C</span>语言表示形式为: # <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token constant">NULL</span> <span class="token operator">!=</span> variable<span class="token punctuation">)</span> <span class="token punctuation">{</span> # <span class="token keyword">return</span> variable<span class="token punctuation">;</span> # <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> # <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token constant">NULL</span> <span class="token operator">!=</span> word<span class="token punctuation">)</span> # <span class="token keyword">return</span> <span class="token string">"variable : word"</span><span class="token punctuation">;</span> # <span class="token keyword">else</span> # <span class="token keyword">return</span> <span class="token string">"parameter null or not set"</span><span class="token punctuation">;</span> # <span class="token punctuation">}</span> <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span>OldValue #设置变量var_name,其值为非空。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token operator">?</span>NewValue<span class="token punctuation">}</span> #由于var_name有值,因此返回变量的原有值 OldValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># unset var_name #将var_name置为空值。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span> <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token operator">?</span>NewValue<span class="token punctuation">}</span> #由于var_name为空,因此返回word。 <span class="token operator">-</span>bash<span class="token punctuation">:</span> var_name<span class="token punctuation">:</span> NewValue <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $var_name #var_name仍然保持原有的空值。 <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token operator">?</span><span class="token punctuation">}</span> #如果word为空,返回下面的输出。 <span class="token operator">-</span>bash<span class="token punctuation">:</span> var_name<span class="token punctuation">:</span> parameter <span class="token keyword">null</span> or not <span class="token keyword">set</span> #$<span class="token punctuation">{</span>variable<span class="token punctuation">:</span>offset<span class="token punctuation">}</span>示例: <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span>notebook <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token number">2</span><span class="token punctuation">}</span> tebook <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token number">0</span><span class="token punctuation">}</span> #如果offset为<span class="token number">0</span>,则取var_name的全部值。 notebook $<span class="token punctuation">{</span>variable<span class="token punctuation">:</span>offset<span class="token punctuation">:</span>length<span class="token punctuation">}</span>示例: <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># var_name<span class="token operator">=</span>notebook <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token number">0</span><span class="token punctuation">:</span><span class="token number">4</span><span class="token punctuation">}</span> note <span class="token punctuation">[</span>root@xieqichao <span class="token operator">~</span><span class="token punctuation">]</span># echo $<span class="token punctuation">{</span>var_name<span class="token punctuation">:</span><span class="token number">4</span><span class="token punctuation">:</span><span class="token number">4</span><span class="token punctuation">}</span> book
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
</div>
<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-b6c3c6d139.css" rel="stylesheet">
<div class="more-toolbox">
<div class="left-toolbox">
<ul class="toolbox-list">
<li class="tool-item tool-active is-like "><a href="javascript:;"><svg class="icon" aria-hidden="true">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#csdnc-thumbsup"></use>
</svg><span class="name">点赞</span>
<span class="count"></span>
</a></li>
<li class="tool-item tool-active is-collection "><a href="javascript:;" data-report-click="{"mod":"popu_824"}"><svg class="icon" aria-hidden="true">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-Collection-G"></use>
</svg><span class="name">收藏</span></a></li>
<li class="tool-item tool-active is-share"><a href="javascript:;" data-report-click="{"mod":"1582594662_002"}"><svg class="icon" aria-hidden="true">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-csdnc-fenxiang"></use>
</svg>分享</a></li>
<!--打赏开始-->
<!--打赏结束-->
<li class="tool-item tool-more">
<a>
<svg t="1575545411852" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5717" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M179.176 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5718"></path><path d="M509.684 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5719"></path><path d="M846.175 499.222m-113.245 0a113.245 113.245 0 1 0 226.49 0 113.245 113.245 0 1 0-226.49 0Z" p-id="5720"></path></svg>
</a>
<ul class="more-box">
<li class="item"><a class="article-report">文章举报</a></li>
</ul>
</li>
</ul>
</div>
</div>
<div class="person-messagebox">
<div class="left-message"><a href="https://blog.csdn.net/xie_qi_chao">
<img src="https://profile.csdnimg.cn/B/F/6/3_xie_qi_chao" class="avatar_pic" username="xie_qi_chao">
<img src="https://g.csdnimg.cn/static/user-reg-year/1x/2.png" class="user-years">
</a></div>
<div class="middle-message">
<div class="title"><span class="tit"><a href="https://blog.csdn.net/xie_qi_chao" data-report-click="{"mod":"popu_379"}" target="_blank">解启超</a></span>
</div>
<div class="text"><span>发布了354 篇原创文章</span> · <span>获赞 52</span> · <span>访问量 3万+</span></div>
</div>
<div class="right-message">
<a href="https://im.csdn.net/im/main.html?userName=xie_qi_chao" target="_blank" class="btn btn-sm btn-red-hollow bt-button personal-letter">私信
</a>
<a class="btn btn-sm attented bt-button personal-watch" data-report-click="{"mod":"popu_379"}">已关注</a>
</div>
</div>
</div>
</article>