Docs/linux基础/shell中的特殊替换结构.html
2022-10-18 16:59:37 +08:00

165 lines
No EOL
5.9 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="tool" content="leanote-desktop-app">
<title>shell中的特殊替换结构</title>
<style>
*{font-family:"lucida grande","lucida sans unicode",lucida,helvetica,"Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;}
body {
margin: 0;
}
/*公用文字样式*/
h1{font-size:30px}h2{font-size:24px}h3{font-size:18px}h4{font-size:14px}
.note-container{
width:850px;
margin:auto;
padding: 10px 20px;
box-shadow: 1px 1px 10px #eee;
}
#title {
margin: 0;
}
table {
margin-bottom: 16px;
border-collapse: collapse;
}
table th, table td {
padding: 6px 13px;
border: 1px solid #ddd;
}
table th {
font-weight: bold;
}
table tr {
background-color: none;
border-top: 1px solid #ccc;
}
table tr:nth-child(2n) {
background-color: rgb(247, 247, 249);
}
.mce-item-table, .mce-item-table td, .mce-item-table th, .mce-item-table caption {
border: 1px solid #ddd;
border-collapse: collapse;
padding: 6px 13px;
}
blockquote {
border-left-width:10px;
background-color:rgba(128,128,128,0.05);
border-top-right-radius:5px;
border-bottom-right-radius:5px;
padding:15px 20px;
border-left:5px solid rgba(128,128,128,0.075);
}
blockquote p {
margin-bottom:1.1em;
font-size:1em;
line-height:1.45
}
blockquote ul:last-child,blockquote ol:last-child {
margin-bottom:0
}
pre {
padding: 18px;
background-color: #f7f7f9;
border: 1px solid #e1e1e8;
border-radius: 3px;
display: block;
}
code {
padding: 2px 4px;
font-size: 90%;
color: #c7254e;
white-space: nowrap;
background-color: #f9f2f4;
border-radius: 4px;
}
.footnote {
vertical-align: top;
position: relative;
top: -0.5em;
font-size: .8em;
}
hr {
margin:2em 0
}
img {
max-width:100%
}
pre {
word-break:break-word
}
p,pre,pre.prettyprint,blockquote {
margin:0 0 1.1em
}
hr {
margin:2em 0
}
img {
max-width:100%
}
.sequence-diagram,.flow-chart {
text-align:center;
margin-bottom:1.1em
}
.sequence-diagram text,.flow-chart text {
font-size:15px !important;
font-family:"Source Sans Pro",sans-serif !important
}
.sequence-diagram [fill="#ffffff"],.flow-chart [fill="#ffffff"] {
fill:#f6f6f6
}
.sequence-diagram [stroke="#000000"],.flow-chart [stroke="#000000"] {
stroke:#3f3f3f
}
.sequence-diagram text[stroke="#000000"],.flow-chart text[stroke="#000000"] {
stroke:none
}
.sequence-diagram [fill="#000"],.flow-chart [fill="#000"],.sequence-diagram [fill="#000000"],.flow-chart [fill="#000000"],.sequence-diagram [fill="black"],.flow-chart [fill="black"] {
fill:#3f3f3f
}
ul,ol {
margin-bottom:1.1em
}
ul ul,ol ul,ul ol,ol ol {
margin-bottom:1.1em
}
kbd {
padding:.1em .6em;
border:1px solid rgba(63,63,63,0.25);
-webkit-box-shadow:0 1px 0 rgba(63,63,63,0.25);
box-shadow:0 1px 0 rgba(63,63,63,0.25);
font-size:.7em;
font-family:sans-serif;
background-color:#fff;
color:#333;
border-radius:3px;
display:inline-block;
margin:0 .1em;
white-space:nowrap
}
.toc ul {
list-style-type:none;
margin-bottom:15px
}
</style>
<!-- 该css供自定义样式 -->
<link href="../leanote-html.css" rel="stylesheet">
</head>
<body>
<div class="note-container">
<h1 class="title" id="leanote-title">shell中的特殊替换结构</h1>
<div class="content-html" id="leanote-content"><p>A,${var:-string}和${var:=string}<br>若变量var为空则用在命令行中用string来替换${var:-string}否则变量var不为空时则用变量var的值来替换${var:-string}<br>如:&nbsp;<br>$ echo $newvar</p><p>$ echo ${newvar:-a}&nbsp;<br>a&nbsp;<br>$ echo $newvar ###变量newvar的值仍然是空但上一命令行中${newvar:-a}被替换成了a</p><p>$ newvar=b&nbsp;<br>$ echo ${newvar:-a} ###变量newvar的值不为空时此命令行中的${newvar:-b}被替换为$newvar即b&nbsp;<br>b&nbsp;<br>$</p><p>对于${var:=string}的替换规则和${var:-string}是一样的,所不同之处是${var:=string}若var为空时用string替换${var:=string}的同时把string赋给变量var</p><p><br>$ echo $newvar</p><p>$ echo ${newvar:=a}&nbsp;<br>a&nbsp;<br>$ echo $newvar ###变量newvar被赋值为a同时${newvar:=a}被替换成a&nbsp;<br>a&nbsp;<br>$ echo ${newvar:=b} ###变量newvar不为空(其值已被赋为a),则${newvar:=b}被替换为newvar的值(即b)<br>a&nbsp;<br>$ echo $newvar&nbsp;<br>a</p><p>${var:=string}很常用的一种用法是,判断某个变量是否赋值,没有的话则给它赋上一个默认值。<br>如设置默认的编辑器:&nbsp;<br>PHP 代码:<br>echo You use editor: ${EDITOR:=/bin/vi}</p><p>B,${var:+string}<br>${var:+string}的替换规则和上面的相反即只有当var不是空的时候才替换成string若var为空时则不替换或者说是替换成变量 var的值即空值。(因为变量var此时为空所以这两种说法是等价的)&nbsp;<br>$ echo $newvar&nbsp;<br>a&nbsp;<br>$ echo ${newvar:+b}&nbsp;<br>b&nbsp;<br>$ echo $newvar&nbsp;<br>a&nbsp;<br>$ newvar=&nbsp;<br>$ echo ${newvar:+b}</p><p>$</p><p>C,${var:?string}<br>替换规则为若变量var不为空则用变量var的值来替换${var:?string}若变量var为空则把string输出到标准错误中并从脚本中退出。我们可利用此特性来检查是否设置了变量的值。&nbsp;<br>$ newvar=&nbsp;<br>$ echo ${newvar:?没有设置newvar的值}&nbsp;<br>bash: newvar: 没有设置newvar的值&nbsp;<br>$ newvar=a&nbsp;<br>$ echo ${newvar:?没有设置newvar的值}&nbsp;<br>a&nbsp;<br>$</p><p>补充扩展在上面这五种替换结构中string不一定是常值的可用另外一个变量的值或是一种命令的输出。&nbsp;<br>$ echo ${var:-`date`}&nbsp;<br>日 3月 6 02:10:39 CST 2005&nbsp;<br>$ echo ${var:-$(date)}&nbsp;<br>日 3月 6 02:11:46 CST 2005&nbsp;<br>$ a=test&nbsp;<br>$ echo ${var:-$a}&nbsp;<br>test&nbsp;<br>$</p><p><br></p></div>
</div>
<!-- 该js供其它处理 -->
<script src="../leanote-html.js"></script>
</body>
</html>