爱睿 發表於 2025-7-11 09:54:55

Linux中的命令连接符详解

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">写在前面</a></li><ul class="second_class_ul"><li><a href="#_lab2_0_0">1. 使用分号执行多个命令</a></li><li><a href="#_lab2_0_1">2. 使用&amp;&amp;执行多个命令</a></li><li><a href="#_lab2_0_2">3. 使用||执行多个命令</a></li><li><a href="#_lab2_0_3">4. &amp;&amp;和||的组合使用</a></li><li><a href="#_lab2_0_4">5. 在ssh中执行多个命令</a></li></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>写在前面</h2>
<p>在<code>Linux</code>中,可以通过多种方式在一条命令链中执行多个命令,以下是几种常见方法:</p>
<p class="maodian"><a name="_lab2_0_0"></a></p><h3>1. 使用分号执行多个命令</h3>
<p>使用分号(<code>;</code>)将命令串联在一起,每个命令都会被执行,且不依赖于前一个命令的执行结果:</p>
<div class="jb51code"><pre class="brush:bash;">command1 ; command2 ; command3</pre></div>
<p>无论前面的命令是否成功,后续命令都会被依次执行。</p>
<p class="maodian"><a name="_lab2_0_1"></a></p><h3>2. 使用&amp;&amp;执行多个命令</h3>
<p>用<code>&amp;&amp;</code>将命令串联,只有当前一个命令执行成功时(返回值为<code>0</code>),才会执行下一个命令:</p>
<div class="jb51code"><pre class="brush:bash;">command1 &amp;&amp; command2 &amp;&amp; command3</pre></div>
<p>这意味着,如果任何一个命令执行失败,后续命令将不会执行。</p>
<p class="maodian"><a name="_lab2_0_2"></a></p><h3>3. 使用||执行多个命令</h3>
<p>使用<code>||</code>可以串联命令,当前一个命令执行失败时,才会执行下一个命令:</p>
<div class="jb51code"><pre class="brush:bash;">command1 || command2 || command3</pre></div>
<p>也就是说,命令链中的任意一个命令成功执行后,后续命令将不会被执行。</p>
<p class="maodian"><a name="_lab2_0_3"></a></p><h3>4. &amp;&amp;和||的组合使用</h3>
<div class="jb51code"><pre class="brush:bash;">command1 &amp;&amp; command2 || command3</pre></div>
<p>在上面这条命令链中,命令的执行逻辑如下:</p>
<ol><li>执行<code>command1</code>:
<ul><li>如果<code>command1</code>成功(返回状态码为<code>0</code>),则执行<code>command2</code>。</li><li>如果<code>command1</code>失败(返回非<code>0</code>状态码),则跳过<code>command2</code>,直接执行<code>command3</code>。</li></ul></li><li>如果<code>command1</code>成功,则执行<code>command2</code>:<ul><li>如果<code>command2</code>成功(返回状态码为<code>0</code>),整个命令链结束,不执行<code>command3</code>。</li><li>如果<code>command2</code>失败(返回非<code>0</code>状态码),则执行<code>command3</code>。</li></ul></li></ol>
<div class="jb51code"><pre class="brush:bash;">command1 || command2 &amp;&amp; command3</pre></div>
<p>上面这条命令链中,由于<code>&amp;&amp;</code>的优先级高于<code>||</code>,所以实际执行顺序是:</p>
<div class="jb51code"><pre class="brush:bash;">command1 || (command2 &amp;&amp; command3)</pre></div>
<p>其执行逻辑如下:</p>
<ol><li>执行<code>command1</code>:
<ul><li>如果<code>command1</code>成功(返回状态码为<code>0</code>),整个命令链结束,不执行<code>command2</code>和<code>command3</code>。</li><li>如果<code>command1</code>失败(返回非<code>0</code>状态码),则继续执行<code>command2 &amp;&amp; command3</code>。</li></ul></li><li>如果<code>command1</code>失败,执行<code>command2</code>:<ul><li>如果<code>command2</code>成功(返回状态码为<code>0</code>),则执行<code>command3</code>。</li><li>如果<code>command2</code>失败(返回非<code>0</code>状态码),<code>command3</code>不会执行。</li></ul></li></ol>
<p class="maodian"><a name="_lab2_0_4"></a></p><h3>5. 在ssh中执行多个命令</h3>
<p>在通过<code>ssh</code>连接远程主机时,可以通过将命令串联在<code></code>中来执行多个命令。例如,使用分号<code>;</code>使命令依次执行:</p>
<div class="jb51code"><pre class="brush:bash;">ssh @ "command1 ; command2 ; command3"</pre></div>
<p>此外,你可以使用<code>&amp;&amp;</code>或<code>||</code>控制命令的执行顺序,语法规则同上文:</p>
<div class="jb51code"><pre class="brush:bash;">ssh @ "command1 &amp;&amp; command2"
ssh @ "command1 || command2"</pre></div>
<p>这些方法使你可以灵活地控制远程主机上命令的执行顺序和条件。</p>
頁: [1]
查看完整版本: Linux中的命令连接符详解