Jadual Kandungan
Shell应用场景
Shell能做什么
Shell不能做什么
Shell的工作原理
最简单的脚本:
运行该脚本:
Shell中的变量
访问变量
Shell中的四则运算
例子程序
其它运算符 =、==、!=、!、-o、-a
关系运算符
字符串运算符
字符串
数组
输出程序
echo
printf
判断语句
test命令
while循环
跳出循环
函数
重定向
写一个自动输入命令的脚本
自动提交github仓库的脚本

Shell脚本应该怎么使用?

Jun 21, 2017 pm 02:17 PM
shell artikel Skrip

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。
Shell可以直接使用在win/Unix/Linux上面,并且可以调用大量系统内部的功能来解释执行程序,如果熟练掌握Shell脚本,可以让我们操作计算机变得更加轻松,也会节省很多时间。

Shell应用场景

Shell能做什么

  • 将一些复杂的命令简单化(平时我们提交一次github代码可能需要很多步骤,但是可以用Shell简化成一步)

  • 可以写一些脚本自动实现一个工程中自动更换最新的sdk(库)

  • 自动打包、编译、发布等功能

  • 清理磁盘中空文件夹

  • 总之一切有规律的活脚本都可以尝试一下

Shell不能做什么

  • 需要精密的运算的时候

  • 需要语言效率很高的时候

  • 需要一些网络操作的时候

  • 总之Shell就是可以快速开发一个脚本简化开发流程,并不可以用来替代高级语言


Shell的工作原理

Shell可以被称作是脚本语言,因为它本身是不需要编译的,而是通过解释器解释之后再编译执行,和传统语言相比多了解释的过程所以效率会略差于传统的直接编译的语言。


最简单的脚本:

#!/bin/bashecho "Hello World"
Salin selepas log masuk

只需要打开文本编辑工具,编辑成以上的样子,然后保存成test.sh

运行该脚本:

1. cd 到该目录下2. chmod +x ./test.sh  #给脚本权限3. ./test.sh  #执行脚本
Salin selepas log masuk

效果图1

这样我们便写出来了第一个最简单的脚本,下面我们可以尝试着写一些复杂的脚本。


Shell中的变量

myText="hello world"muNum=100
Salin selepas log masuk

这里面需要注意的就是,“=”前后不能有空格,命名规则就和其它语言一样了。

访问变量

myText="hello world"muNum=100echo $myTextecho muNum
Salin selepas log masuk

当想要访问变量的时候,需要使用$,否则输出的将是纯文本内容,如下图所示。


效果图2

Shell中的四则运算

例子程序

#!/bin/bashecho "Hello World !"a=3b=5val=`expr $a + $b`echo "Total value : $val"val=`expr $a - $b`echo "Total value : $val"val=`expr $a \* $b`echo "Total value : $val"val=`expr $a / $b`echo "Total value : $val"
Salin selepas log masuk

这里面需要注意的就是,定义变量的时候“=”前后是不能有空格的,但是进行四则运算的时候运算符号前后一定要有空格,乘法的时候需要进行转义。


效果图3.png

其它运算符 =、==、!=、!、-o、-a

例子程序

a=3b=5val=`expr $a / $b`echo "Total value : $val"val=`expr $a % $b`echo "Total value : $val"if [ $a == $b ]then
   echo "a is equal to b"fiif [ $a != $b ]then
   echo "a is not equal to b"fi
Salin selepas log masuk

效果图4

关系运算符

#!/bin/sh例子程序

a=10b=20if [ $a -eq $b ]then
   echo "true"else
   echo "false"fiif [ $a -ne $b ]then
   echo "true"else
   echo "false"fiif [ $a -gt $b ]then
   echo "true"else
   echo "false"fiif [ $a -lt $b ]then
   echo "true"else
   echo "false"fiif [ $a -ge $b ]then
   echo "true"else
   echo "false"fiif [ $a -le $b ]then
   echo "true"else
   echo "false"fi
Salin selepas log masuk

效果图5

字符串运算符





字符串

#!/bin/shmtext="hello"  #定义字符串
mtext2="world"mtext3=$mtext" "$mtext2  #字符串的拼接echo $mtext3  #输出字符串echo ${#mtext3}  #输出字符串长度echo ${mtext3:1:4}  #截取字符串
Salin selepas log masuk

效果图6

数组

#!/bin/sharray=(1 2 3 4 5)  #定义数组
array2=(aa bb cc dd ee)  #定义数组
value=${array[3]}  #找到某一个下标的数,然后赋值echo $value  #打印
value2=${array2[3]}  #找到某一个下标的数,然后赋值echo $value2  #打印
length=${#array[*]}  #获取数组长度echo $length
Salin selepas log masuk

效果图7

输出程序

echo

#!/bin/shecho "hello world"  echo hello world  

text="hello world"echo $textecho -e "hello \nworld"  #输出并且换行echo "hello world" > a.txt  #重定向到文件echo `date`  #输出当前系统时间
Salin selepas log masuk

效果图8

printf

同c语言,就不过多介绍了


判断语句

  • if

  • if-else

  • if-elseIf

  • case

#!/bin/sha=10b=20if [ $a == $b ]then
   echo "true"fiif [ $a == $b ]then
   echo "true"else
   echo "false"fiif [ $a == $b ]then
   echo "a is equal to b"elif [ $a -gt $b ]then
   echo "a is greater than b"elif [ $a -lt $b ]then
   echo "a is less than b"else
   echo "None of the condition met"fi
Salin selepas log masuk
效果图9

test命令

test $[num1] -eq $[num2]  #判断两个变量是否相等
test num1=num2  #判断两个数字是否相等
Salin selepas log masuk

 

for循环
#!/bin/shfor i in {1..5}doecho $idonefor i in 5 6 7 8 9doecho $idonefor FILE in $HOME/.bash*do
   echo $FILEdone
Salin selepas log masuk
<code class="bash"><span class="hljs-meta"><br/><img src="/static/imghw/default1.png"  data-src="https://img.php.cn/upload/article/000/000/001/e287dce1bca30a9896dc8bd2ecb0e156-15.png"  class="lazy" alt=""/></span></code>
Salin selepas log masuk
效果10

while循环

#!/bin/shCOUNTER=0while [ $COUNTER -lt 5 ]doCOUNTER=`expr $COUNTER + 1`echo $COUNTERdoneecho &#39;请输入。。。&#39;echo &#39;ctrl + d 即可停止该程序&#39;while read FILMdoecho &quot;Yeah! great film the $FILM&quot;done
Salin selepas log masuk

以上是while循环的两种用法,第一种是比较常规的,执行循环,然后每次都把控制的数加1,就可以让while循环有退出的条件了。

第二种是用户从键盘数据,然后把用户输入的文字输出出来。


跳出循环

break  #跳出所有循环
break n  #跳出第n层f循环
continue  #跳出当前循环
Salin selepas log masuk

函数

#!/bin/shsysout(){echo &quot;hello world&quot;}

sysout
Salin selepas log masuk

定义一个没有返回值的函数,然后调用该函数

#!/bin/shtest(){

    aNum=3anotherNum=5return $(($aNum+$anotherNum))
}
test
result=$?echo $result
Salin selepas log masuk

定义一个有返回值的函数,调用该函数,输出结果


效果图11
#!/bin/shtest(){echo $1  #接收第一个参数echo $2  #接收第二个参数echo $3  #接收第三个参数echo $#  #接收到参数的个数echo $*  #接收到的所有参数
}

test aa bb cc
Salin selepas log masuk

定义了一个需要传递参数的函数


效果图12

重定向

$echo result &gt; file  #将结果写入文件,结果不会在控制台展示,而是在文件中,覆盖写
$echo result &gt;&gt; file  #将结果写入文件,结果不会在控制台展示,而是在文件中,追加写echo input &lt; file  #获取输入流
Salin selepas log masuk


写一个自动输入命令的脚本

自动提交github仓库的脚本

#!/bin/bashecho &quot;-------Begin-------&quot;git add .
git commit -m $1echo $1git push origin masterecho &quot;--------End--------&quot;
Salin selepas log masuk

 


效果图13

以上便是我对shell知识的总结,欢迎大家点心,评论,一起讨论~~

 脚本程序

Atas ialah kandungan terperinci Shell脚本应该怎么使用?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk memasang Classic Shell pada Windows 11? Bagaimana untuk memasang Classic Shell pada Windows 11? Apr 21, 2023 pm 09:13 PM

Bagaimana untuk memasang Classic Shell pada Windows 11?

Bagaimana untuk membuat skrip untuk penyuntingan? Tutorial cara membuat skrip melalui penyuntingan Bagaimana untuk membuat skrip untuk penyuntingan? Tutorial cara membuat skrip melalui penyuntingan Mar 13, 2024 pm 12:46 PM

Bagaimana untuk membuat skrip untuk penyuntingan? Tutorial cara membuat skrip melalui penyuntingan

Skrip Python akan dilaksanakan setiap 5 minit Skrip Python akan dilaksanakan setiap 5 minit Sep 10, 2023 pm 03:33 PM

Skrip Python akan dilaksanakan setiap 5 minit

Explorer.exe tidak bermula pada permulaan sistem [Betulkan] Explorer.exe tidak bermula pada permulaan sistem [Betulkan] Jun 03, 2023 am 08:31 AM

Explorer.exe tidak bermula pada permulaan sistem [Betulkan]

Bagaimanakah saya boleh membuat wang dengan menerbitkan artikel di Toutiao hari ini? Bagaimana untuk mendapatkan lebih banyak pendapatan dengan menerbitkan artikel di Toutiao hari ini! Bagaimanakah saya boleh membuat wang dengan menerbitkan artikel di Toutiao hari ini? Bagaimana untuk mendapatkan lebih banyak pendapatan dengan menerbitkan artikel di Toutiao hari ini! Mar 15, 2024 pm 04:13 PM

Bagaimanakah saya boleh membuat wang dengan menerbitkan artikel di Toutiao hari ini? Bagaimana untuk mendapatkan lebih banyak pendapatan dengan menerbitkan artikel di Toutiao hari ini!

Skrip Python untuk mematikan komputer Skrip Python untuk mematikan komputer Aug 29, 2023 am 08:01 AM

Skrip Python untuk mematikan komputer

Bagaimana untuk melaksanakan fail .sh dalam sistem Linux? Bagaimana untuk melaksanakan fail .sh dalam sistem Linux? Mar 14, 2024 pm 06:42 PM

Bagaimana untuk melaksanakan fail .sh dalam sistem Linux?

Arahan PowerShell gagal dengan isu HRESULT 0x80073D02 dibetulkan Arahan PowerShell gagal dengan isu HRESULT 0x80073D02 dibetulkan May 10, 2023 am 11:02 AM

Arahan PowerShell gagal dengan isu HRESULT 0x80073D02 dibetulkan

See all articles