Shell日常使用的小技巧
<p>Shell 脚本在我们日常开发和学习都有举足轻重的地位,比如看一些开源项目,比如项目中的各式各样的脚本,对于促进生产力工具有很大帮助!</p>
<p>
<img title="Shell日常使用的小技巧" alt="Shell日常使用的小技巧" border="0" src="https://zhuji.jb51.net/uploads/img/202305/be103ea6f2d608a44373c9e9b4537bb5.jpg"></p>
<h3>
1、命令小技巧</h3>
<h4>
1、-x命令进行跟踪调试执行</h4>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/sh </span></span>
</li>
<li>
</li>
<li class="alt">
<span>num1=10 </span>
</li>
<li>
<span>num2=20 </span>
</li>
<li class="alt">
<span>if (($num1 <= $num2)); <span class="keyword">then</span><span> </span></span>
</li>
<li>
<span>echo num1 lesser equal num2 </span>
</li>
<li class="alt">
<span><span class="keyword">else</span><span> </span></span>
</li>
<li>
<span>echo num1 greater num2 </span>
</li>
<li class="alt">
<span>fi </span>
</li>
</ol>
<p>
执行:</p>
<ol class="dp-sql">
<li class="alt">
<span><span>➜ note git:(master) ✗ sh -x /Users/fanhaodong/Desktop/project/test.sh </span></span>
</li>
<li>
<span>+ num1=10 </span>
</li>
<li class="alt">
<span>+ num2=20 </span>
</li>
<li>
<span>+ (( 10 <= 20 )) </span>
</li>
<li class="alt">
<span>+ echo num1 lesser equal num2 </span>
</li>
<li>
<span>num1 lesser equal num2 </span>
</li>
</ol>
<h4>
2、-c命令 (执行命令参数)</h4>
<ol class="dp-sql">
<li class="alt">
<span><span>➜ note git:(master) ✗ sh -c << EOF " </span></span>
</li>
<li>
<span>dquote> echo hello world </span>
</li>
<li class="alt">
<span>dquote> echo hello world2 </span>
</li>
<li>
<span>dquote> " </span>
</li>
<li class="alt">
<span>heredoc> EOF </span>
</li>
<li>
<span>hello world </span>
</li>
<li class="alt">
<span>hello world2 </span>
</li>
</ol>
<h4>
3、使用set变量</h4>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/sh </span></span>
</li>
<li>
</li>
<li class="alt">
<span># -v Print shell input lines <span class="keyword">as</span><span> they are </span><span class="keyword">read</span><span>. </span></span>
</li>
<li>
<span># -x Print commands <span class="op">and</span><span> their arguments </span><span class="keyword">as</span><span> they are executed. </span></span>
</li>
<li class="alt">
<span># -e Exit immediately if a command exits <span class="keyword">with</span><span> a non-zero status. </span></span>
</li>
<li>
<span><span class="keyword">set</span><span> -ex </span></span>
</li>
<li class="alt">
</li>
<li>
<span>echo <span class="string">"hello world"</span><span> </span></span>
</li>
<li class="alt">
</li>
<li>
<span>exit 1 </span>
</li>
</ol>
<p>
执行</p>
<ol class="dp-sql">
<li class="alt">
<span><span>➜ makefile git:(master) ✗ sh ./main.sh </span></span>
</li>
<li>
<span>+ echo <span class="string">'hello world'</span><span> </span></span>
</li>
<li class="alt">
<span>hello world </span>
</li>
<li>
<span>+ exit 1 </span>
</li>
<li class="alt">
<span>➜ makefile git:(master) ✗ echo $? </span>
</li>
<li>
<span>1 </span>
</li>
</ol>
<p>
帮助可以看:sh -c "help set"</p>
<h3>
2、语法小技巧</h3>
<h4>
1、${}和$适用场景</h4>
<p>
<strong>1)$ 可能有语法歧义,所以一般使用${}</strong></p>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/sh </span></span>
</li>
<li>
<span>s=<span class="string">"my name is s"</span><span> </span></span>
</li>
<li class="alt">
<span>echo 输出: $sa </span>
</li>
<li>
<span>echo 输出: ${s}a </span>
</li>
<li class="alt">
</li>
<li>
<span>#输出: </span>
</li>
<li class="alt">
<span>#输出: my <span class="keyword">name</span><span> </span><span class="keyword">is</span><span> sa </span></span>
</li>
</ol>
<p>
<strong>2、((cmd))</strong></p>
<ul>
<li>
<strong>可以替换[-le ] 命令</strong>
</li>
</ul>
<ol class="dp-sql">
<li class="alt">
<span><span>num1=10 </span></span>
</li>
<li>
<span>num2=20 </span>
</li>
<li class="alt">
<span>if (($num1 <= $num2)); <span class="keyword">then</span><span> </span></span>
</li>
<li>
<span>echo num1 lesser equal num2 </span>
</li>
<li class="alt">
<span>fi </span>
</li>
</ol>
<p>
<strong>3、cat[>>|>]<</strong></p>
<p>
如果重定向的操作符是<<-,那么分界符(EOF)所在行的开头部分的制表符(Tab)都将被去除。这可以解决由于脚本中的自然缩进产生的制表符。</p>
<ol class="dp-sql">
<li class="alt">
<span><span>➜ test cat > glide.yaml << EOF </span></span>
</li>
<li>
<span>heredoc> <span class="keyword">name</span><span>: tom </span></span>
</li>
<li class="alt">
<span>heredoc> age: 10 </span>
</li>
<li>
<span>heredoc> hobby: </span>
</li>
<li class="alt">
<span>heredoc> - football </span>
</li>
<li>
<span>heredoc> EOF </span>
</li>
<li class="alt">
</li>
<li>
<span>➜ test cat glide.yaml </span>
</li>
<li class="alt">
<span><span class="keyword">name</span><span>: tom </span></span>
</li>
<li>
<span>age: 10 </span>
</li>
<li class="alt">
<span>hobby: </span>
</li>
<li>
<span>- football </span>
</li>
</ol>
<p>
<strong>4、 单引号,双引号,没有引号的区别</strong></p>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/sh </span></span>
</li>
<li>
</li>
<li class="alt">
<span><span class="keyword">name</span><span>=</span><span class="string">"tom"</span><span> </span></span>
</li>
<li>
</li>
<li class="alt">
<span>f1(){ </span>
</li>
<li>
<span>echo "f1 hello world </span>
</li>
<li class="alt">
<span>my <span class="keyword">name</span><span> </span><span class="keyword">is</span><span> $</span><span class="keyword">name</span><span> </span></span>
</li>
<li>
<span>" </span>
</li>
<li class="alt">
<span>} </span>
</li>
<li>
</li>
<li class="alt">
<span>f2(){ </span>
</li>
<li>
<span>echo 'f2 hello world </span>
</li>
<li class="alt">
<span>my <span class="keyword">name</span><span> </span><span class="keyword">is</span><span> $</span><span class="keyword">name</span><span> </span></span>
</li>
<li>
<span>' </span>
</li>
<li class="alt">
<span>} </span>
</li>
<li>
</li>
<li class="alt">
<span>f3(){ </span>
</li>
<li>
<span>echo f3 hello world </span>
</li>
<li class="alt">
<span>my <span class="keyword">name</span><span> </span><span class="keyword">is</span><span> $</span><span class="keyword">name</span><span> </span></span>
</li>
<li>
<span>} </span>
</li>
<li class="alt">
</li>
<li>
<span>f1 </span>
</li>
<li class="alt">
<span>f2 </span>
</li>
<li>
<span>f3 </span>
</li>
</ol>
<p>
输出</p>
<ol class="dp-sql">
<li class="alt">
<span><span>➜ makefile git:(master) ✗ sh ./main.sh </span></span>
</li>
<li>
<span>f1 hello world </span>
</li>
<li class="alt">
<span>my <span class="keyword">name</span><span> </span><span class="keyword">is</span><span> tom </span></span>
</li>
<li>
</li>
<li class="alt">
<span>f2 hello world </span>
</li>
<li>
<span>my <span class="keyword">name</span><span> </span><span class="keyword">is</span><span> $</span><span class="keyword">name</span><span> </span></span>
</li>
<li class="alt">
</li>
<li>
<span>f3 hello world </span>
</li>
<li class="alt">
<span>./main.sh: line 19: my: command <span class="op">not</span><span> found </span></span>
</li>
</ol>
<p>
可以看到</p>
<ul>
<li>
双引号会自动对变量赋值</li>
<li>
单引号不会对变量进行赋值等操作</li>
<li>
不加引号对于换行等功能无法实现!只能使用换行符</li>
</ul>
<ol class="dp-sql">
<li class="alt">
<span><span>f3(){ </span></span>
</li>
<li>
<span>echo f3 hello world \ </span>
</li>
<li class="alt">
<span>my <span class="keyword">name</span><span> </span><span class="keyword">is</span><span> $</span><span class="keyword">name</span><span> </span></span>
</li>
<li>
<span>} </span>
</li>
</ol>
<p>
<strong>5、特殊变量</strong></p>
<ul>
<li>
$0: 当前脚本的文件名</li>
<li>
$n : 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。</li>
<li>
$#: 传递给脚本或函数的参数个数。</li>
<li>
$*: 传递给脚本或函数的所有参数。</li>
<li>
$@: 传递给脚本或函数的所有参数(推荐使用这个),当使用"" 双引号引用是$*会变成字符串而不是数组</li>
<li>
$?: 上个命令的退出状态,或函数的返回值。一般情况下,大部分命令执行成功后会返回 0,失败返回 1。</li>
<li>
$$: 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。</li>
</ul>
<p>
<strong>6、[[]]和[]标准 以及基本语法规范</strong></p>
<p>
具体规范:</p>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/sh </span></span>
</li>
<li>
<span><span class="keyword">name</span><span>=</span><span class="string">""</span><span> </span></span>
</li>
<li class="alt">
<span>if [[ -z $<span class="keyword">name</span><span> ]]; </span><span class="keyword">then</span><span> </span></span>
</li>
<li>
<span>echo <span class="string">"is zero"</span><span> </span></span>
</li>
<li class="alt">
<span>fi </span>
</li>
</ol>
<p>
执行后发现</p>
<p>
<img title="Shell日常使用的小技巧" alt="Shell日常使用的小技巧" border="0" src="https://zhuji.jb51.net/uploads/img/202305/3f640ae4d3133bd1d70726c0ad33ee01.jpg"></p>
<p>
<strong>7、/bin/sh 与 /bin/bash 的区别</strong></p>
<p>
/bin/sh 与 /bin/bash 的区别</p>
<h3>
3、获取命令结果$(cmd)</h3>
<p>
有两种写法,一种是$()这个并不是所有的shell都支持,但是比较直观, 另外一种是"``" (它可是适用更多的平台)</p>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/sh </span></span>
</li>
<li class="alt">
<span>echo `ls -a /Users/fanhaodong/note` </span>
</li>
<li class="alt">
<span>echo $(ls -a /Users/fanhaodong/note) </span>
</li>
</ol>
<p>
输出:</p>
<ol class="dp-sql">
<li class="alt">
<span><span>. .. .DS_Store 1714.jpg docker-rocketmq-cluster gridea-home hexo-home note pdf vuepress-starter </span></span>
</li>
<li class="alt">
<span>. .. .DS_Store 1714.jpg docker-rocketmq-cluster gridea-home hexo-home note pdf vuepress-starter </span>
</li>
</ol>
<h3>
<strong>4、输入输出重定向2>&1</strong>
</h3>
<p>
使用</p>
<p>
程序中经常有,标准输出,但是还有错误输出,因此需要合并到一个流中</p>
<p>
其实Go的程序中正执行脚本的时候可以指定,标准输出和错误输出</p>
<ol class="dp-sql">
<li class="alt">
<span><span>command := </span><span class="keyword">exec</span><span>.Command(shell, </span><span class="string">"-c"</span><span>, cmd) </span></span>
</li>
<li>
<span>command.Stdout = os.Stdout </span>
</li>
<li class="alt">
<span>command.Stderr = os.Stderr </span>
</li>
</ol>
<p>
使用的时候:</p>
<ul>
<li>
默认为标准输出重定向,与 1> 相同</li>
<li>
2>&1 意思是把 标准错误输出 重定向到 标准输出.</li>
<li>
&>file 意思是把标准输出和标准错误输出 都重定向到文件file中</li>
</ul>
<p>
例如:</p>
<ol class="dp-sql">
<li class="alt">
<span><span>command ></span><span class="keyword">out</span><span>.file 2>&1& </span></span>
</li>
</ol>
<p>
command >out.file是将command的标准输出重定向到out.file文件,即输出内容不打印到屏幕上,而是输出到out.file文件中。2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。最后一个&,是让该命令在后台执行。</p>
<h3>
5、If语句</h3>
<p>
if 其实就是test 命令</p>
<h3>
1、格式</h3>
<p>
<strong>1) 换行写</strong></p>
<ol class="dp-sql">
<li class="alt">
<span><span>if [ condition ]; </span><span class="keyword">then</span><span> </span></span>
</li>
<li>
<span># body </span>
</li>
<li class="alt">
<span>elif [ condition ]; <span class="keyword">then</span><span> </span></span>
</li>
<li>
<span># body </span>
</li>
<li class="alt">
<span><span class="keyword">else</span><span> </span></span>
</li>
<li>
<span># body </span>
</li>
<li class="alt">
<span>fi </span>
</li>
</ol>
<p>
<strong>2)非换行写</strong></p>
<ol class="dp-sql">
<li class="alt">
<span><span>if [ -f </span><span class="string">"/Users/fanhaodong/note/note/Makefile1"</span><span> ]; </span><span class="keyword">then</span><span> echo 111 ; echo 222 ;elif [ -f </span><span class="string">"/Users/fanhaodong/note/note/README.md"</span><span> ]; </span><span class="keyword">then</span><span> echo 333 ; echo 4444 ; </span><span class="keyword">else</span><span> echo 555 ; echo 666 ; fi </span></span>
</li>
</ol>
<h3>
2、结果获取/判断</h3>
<p>
结果输出0 ,表示为真,可以通过$? 来获取结果</p>
<h3>
3、例如调试条件</h3>
<ol class="dp-sql">
<li class="alt">
<span><span>➜ note git:(master) ✗ test </span><span class="string">"abc"</span><span>!=</span><span class="string">"def"</span><span> </span></span>
</li>
<li>
<span>➜ note git:(master) ✗ echo $? </span>
</li>
<li class="alt">
<span>0 </span>
</li>
</ol>
<h3>
4、测试文件是否存在</h3>
<ul>
<li>
如果你要判断一个文件是否存在,只需要-e 即可,输出0 表示文件存在 (不在判断类型的时候推荐使用这个)</li>
<li>
如果你要判断一个文件是否为文件夹,并且判断是否存在,只需要-d 即可</li>
<li>
如果你要判断一个文件是否为常规文件 ,并且判断是否存在,只需要-f 即可</li>
<li>
-L filename 如果 filename为符号链接,则为真</li>
</ul>
<ol class="dp-sql">
<li class="alt">
<span><span># ls -al </span></span>
</li>
<li>
<span>lrwxrwxrwx 1 root root 5 Mar 1 09:49 c.txt -> a.txt </span>
</li>
<li class="alt">
<span># [ -L <span class="string">"./c.txt"</span><span> ] </span></span>
</li>
<li>
<span># echo $? </span>
</li>
<li class="alt">
<span>0 </span>
</li>
</ol>
<ul>
<li>
-r filename 如果 filename可读,则为真</li>
<li>
-w filename 如果 filename可写,则为真</li>
<li>
-x filename 如果 filename可执行,则为真</li>
<li>
-s filename 如果文件长度不为0,则为真</li>
<li>
-h filename 如果文件是软链接,则为真</li>
</ul>
<ol class="dp-sql">
<li class="alt">
<span><span>➜ note git:(master) ✗ [ -f </span><span class="string">"/Users/fanhaodong/note/note/Makefile"</span><span> ] </span></span>
</li>
<li>
<span>➜ note git:(master) ✗ echo $? </span>
</li>
<li class="alt">
<span>0 </span>
</li>
<li>
<span>➜ note git:(master) ✗ [ -f <span class="string">"/Users/fanhaodong/note/note/Makefile1"</span><span> ] </span></span>
</li>
<li class="alt">
<span>➜ note git:(master) ✗ echo $? </span>
</li>
<li>
<span>1 </span>
</li>
</ol>
<h3>
5、字符串操作</h3>
<h4>
字符串推荐加"" 进行定义</h4>
<p>
<strong>1) 判断字符串是否为空-z (zero)么</strong></p>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/sh </span></span>
</li>
<li>
</li>
<li class="alt">
<span>str=<span class="string">""</span><span> </span></span>
</li>
<li>
<span>if [ -z <span class="string">"${str}"</span><span> ]; </span><span class="keyword">then</span><span> </span></span>
</li>
<li class="alt">
<span>echo str <span class="keyword">is</span><span> empty </span></span>
</li>
<li>
<span>fi </span>
</li>
<li class="alt">
<span># str <span class="keyword">is</span><span> empty </span></span>
</li>
</ol>
<p>
<strong>2)判断两个字符串是否相同</strong></p>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/sh </span></span>
</li>
<li>
</li>
<li class="alt">
<span>str1=<span class="string">"str"</span><span> </span></span>
</li>
<li>
<span>str2=<span class="string">"str2"</span><span> </span></span>
</li>
<li class="alt">
</li>
<li>
<span>if [ <span class="string">"$str1"</span><span> = </span><span class="string">"$str2"</span><span> ]; </span><span class="keyword">then</span><span> </span></span>
</li>
<li class="alt">
<span>echo str1 <span class="keyword">is</span><span> equal str2 </span></span>
</li>
<li>
<span><span class="keyword">else</span><span> </span></span>
</li>
<li class="alt">
<span>echo str1 <span class="keyword">is</span><span> </span><span class="op">not</span><span> equal str2 </span></span>
</li>
<li>
<span>fi </span>
</li>
<li class="alt">
</li>
<li>
<span># str1 <span class="keyword">is</span><span> </span><span class="op">not</span><span> equal str2 </span></span>
</li>
</ol>
<h3>
4、测试一个命令是否存在command -v $#</h3>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/sh </span></span>
</li>
<li>
<span>cmd=go </span>
</li>
<li class="alt">
<span>if [ `command -v $cmd` ]; <span class="keyword">then</span><span> </span></span>
</li>
<li>
<span>echo $cmd command <span class="keyword">is</span><span> exists </span></span>
</li>
<li class="alt">
<span><span class="keyword">else</span><span> </span></span>
</li>
<li>
<span>echo $cmd command <span class="op">not</span><span> exists </span></span>
</li>
<li class="alt">
<span>fi </span>
</li>
<li>
<span># go command <span class="keyword">is</span><span> exists </span></span>
</li>
</ol>
<h3>
5、获取字符串长度${#var}</h3>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/sh </span></span>
</li>
<li>
<span>str=<span class="string">"hello "</span><span> </span></span>
</li>
<li class="alt">
<span>str1=hello </span>
</li>
<li>
<span>echo str 的长度是 ${#str} </span>
</li>
<li class="alt">
<span>echo str1 的长度是 ${#str1} </span>
</li>
<li>
</li>
<li class="alt">
<span>#str 的长度是 8 </span>
</li>
<li>
<span>#str1 的长度是 5 </span>
</li>
</ol>
<h3>
6、数字比较</h3>
<ul>
<li>
-eq 等于</li>
<li>
-ne 不等于</li>
<li>
-gt 大于</li>
<li>
-ge 大于等于</li>
<li>
-lt 小于</li>
<li>
-le 小于等于</li>
</ul>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/sh </span></span>
</li>
<li>
</li>
<li class="alt">
<span>num1=10 </span>
</li>
<li>
<span>num2=20 </span>
</li>
<li class="alt">
<span>if (($num1 <= $num2)); <span class="keyword">then</span><span> </span></span>
</li>
<li>
<span>echo num1 lesser equal num2 </span>
</li>
<li class="alt">
<span>fi </span>
</li>
<li>
</li>
<li class="alt">
<span>if [ $num1 -le $num2 ]; <span class="keyword">then</span><span> </span></span>
</li>
<li>
<span>echo num1 lesser equal num2 </span>
</li>
<li class="alt">
<span>fi </span>
</li>
<li>
</li>
<li class="alt">
<span># num1 lesser equal num2 </span>
</li>
<li>
<span># num1 lesser equal num2 </span>
</li>
</ol>
<h3>
7、shell脚本中if判断'-a' - '-z'含义</h3>
<p>
<img title="Shell日常使用的小技巧" alt="Shell日常使用的小技巧" border="0" src="https://zhuji.jb51.net/uploads/img/202305/a3ba85952ef7f4f34db7d4e3cc7fd792.jpg"></p>
<p>
<img title="Shell日常使用的小技巧" alt="Shell日常使用的小技巧" border="0" src="https://zhuji.jb51.net/uploads/img/202305/4ba9bc601f4995a235d103595bc86aae.jpg"></p>
<p>
<img title="Shell日常使用的小技巧" alt="Shell日常使用的小技巧" border="0" src="https://zhuji.jb51.net/uploads/img/202305/5875405b118a3153b67adfa4a7c0ac5e.jpg"></p>
<h3>
6、for循环</h3>
<h4>
1、forin; do;;done</h4>
<ol class="dp-sql">
<li class="alt">
<span><span>#!/bin/bash </span></span>
</li>
<li>
</li>
<li class="alt">
<span><span class="keyword">for</span><span> item </span><span class="op">in</span><span> {1..5}; do echo </span><span class="string">"$item"</span><span>; done </span></span>
</li>
<li>
</li>
<li class="alt">
<span> /bin/bash <span class="string">"/Users/fanhaodong/note/note/Linux/shell/file.sh"</span><span> </span></span>
</li>
<li>
<span>1 </span>
</li>
<li class="alt">
<span>2 </span>
</li>
<li>
<span>3 </span>
</li>
<li class="alt">
<span>4 </span>
</li>
<li>
<span>5 </span>
</li>
</ol>
<h4>
2、for((x=0; x<10; x++));do;; done</h4>
<ol class="dp-sql">
<li class="alt">
<span><span class="keyword">for</span><span>((x=0; x<10; x++));do echo </span><span class="string">"$x"</span><span> ;done </span></span>
</li>
</ol>
<h3>
7、awk</h3>
<h4>
<strong>1、例子</strong>
</h4>
<p>
<strong>demo</strong></p>
<ol class="dp-sql">
<li class="alt">
<span><span># cat demo.txt </span></span>
</li>
<li>
<span>11 22 </span>
</li>
<li class="alt">
<span>111 </span>
</li>
<li>
<span>22 33 </span>
</li>
</ol>
<p>
<strong>脚本</strong></p>
<ol class="dp-sql">
<li class="alt">
<span><span># awk -F </span><span class="string">':'</span><span> </span><span class="string">'BEGIN {print "start"} /:/ {printf "do1 $1=%s $2=%s\n",$1,$2} {print "do2 .."} END {print "e nd"}'</span><span> demo.txt </span></span>
</li>
<li>
<span>start </span>
</li>
<li class="alt">
<span>do1 $1=11 $2=22 </span>
</li>
<li>
<span>do2 .. </span>
</li>
<li class="alt">
<span>do2 .. </span>
</li>
<li>
<span>do1 $1=22 $2=33 </span>
</li>
<li class="alt">
<span>do2 .. </span>
</li>
<li>
<span>e nd </span>
</li>
</ol>
<h4>
<strong>2、格式</strong>
</h4>
<ol class="dp-sql">
<li class="alt">
<span><span>awk -arg1 x1 -arg2 x2 </span><span class="string">'BEGIN {开始执行脚本} 条件 {过程1} {过程2} END{循环体执行完后最后执行}'</span><span> </span></span>
</li>
</ol>
<ol>
<li>
其中条件执行正则表达式、判断等</li>
<li>
还支持一些内置函数 , 一些内置变量!</li>
<li>
过程中支持if函数</li>
</ol>
<h3>
8、sed</h3>
<p>
首先gun的sed函数和mac的set是有些不同的!具体看:</p>
<ul>
<li>
https://superuser.com/questions/307165/newlines-in-sed-on-mac-os-x</li>
</ul>
<p>
具体写在其他文档上,目前使用的多个命令也未分享!</p>
<p>
原文地址:https://www.toutiao.com/a7041836020135887368/</p>
頁:
[1]