Shell腳本,就是利用Shell的指令解釋的功能,對一個純文字的檔案進行解析,然後執行這些功能,也可以說Shell腳本就是一系列指令的集合。
Shell可以直接使用在win/Unix/Linux上面,並且可以調用大量系統內部的功能來解釋執行程序,如果熟練掌握Shell腳本,可以讓我們操作計算機變得更加輕鬆,也會節省很多時間。
#將一些複雜的命令簡單化(平時我們提交一次github程式碼可能需要很多步驟,但是可以用Shell簡化成一步)
可以寫一些腳本自動實作一個工程中自動更換最新的sdk(庫)
自動打包、編譯、發布等功能
清理磁碟中空資料夾
總之一切有規律的活腳本都可以嘗試一下
需要精密的運算的時候
需要語言效率很高的時候
需要一些網路操作的時候
#總之Shell就是可以快速開發一個腳本簡化開發流程,並不可以用來替代高階語言
Shell可以被稱為是腳本語言,因為它本身是不需要編譯的,而是透過解釋器解釋之後再編譯執行,和傳統語言相比多了解釋的過程所以效率會略差於傳統的直接編譯的語言。
#!/bin/bashecho "Hello World"
只需要開啟文字編輯工具,編輯成以上的樣子,然後儲存成test.sh
1. cd 到该目录下2. chmod +x ./test.sh #给脚本权限3. ./test.sh #执行脚本
這樣我們就寫出來了第一個最簡單的腳本,下面我們可以嘗試寫一些複雜的腳本。
myText="hello world"muNum=100
這裡面需要注意的就是,「=」前後不能有空格,命名規則就和其它語言一樣了。
myText="hello world"muNum=100echo $myTextecho muNum
當想要存取變數的時候,需要使用$,否則輸出的將是純文字內容,如下圖所示。
#!/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"
這裡面需要注意的就是,定義變數的時候「=」前後是不能有空格的,但是進行四則運算的時候運算符號前後一定要有空格,乘法的時候需要進行轉義。
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
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
#!/bin/shmtext="hello" #定义字符串 mtext2="world"mtext3=$mtext" "$mtext2 #字符串的拼接echo $mtext3 #输出字符串echo ${#mtext3} #输出字符串长度echo ${mtext3:1:4} #截取字符串
#!/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
#!/bin/shecho "hello world" echo hello world text="hello world"echo $textecho -e "hello \nworld" #输出并且换行echo "hello world" > a.txt #重定向到文件echo `date` #输出当前系统时间
同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
test $[num1] -eq $[num2] #判断两个变量是否相等 test num1=num2 #判断两个数字是否相等
for循环
#!/bin/shfor i in {1..5}doecho $idonefor i in 5 6 7 8 9doecho $idonefor FILE in $HOME/.bash*do echo $FILEdone
<code class="bash"><span class="hljs-meta"><br/><img src="https://img.php.cn/upload/article/000/000/001/e287dce1bca30a9896dc8bd2ecb0e156-15.png" alt=""/></span></code>
#!/bin/shCOUNTER=0while [ $COUNTER -lt 5 ]doCOUNTER=`expr $COUNTER + 1`echo $COUNTERdoneecho '请输入。。。'echo 'ctrl + d 即可停止该程序'while read FILMdoecho "Yeah! great film the $FILM"done
以上是while循环的两种用法,第一种是比较常规的,执行循环,然后每次都把控制的数加1,就可以让while循环有退出的条件了。
第二种是用户从键盘数据,然后把用户输入的文字输出出来。
break #跳出所有循环 break n #跳出第n层f循环 continue #跳出当前循环
#!/bin/shsysout(){echo "hello world"} sysout
定义一个没有返回值的函数,然后调用该函数
#!/bin/shtest(){ aNum=3anotherNum=5return $(($aNum+$anotherNum)) } test result=$?echo $result
定义一个有返回值的函数,调用该函数,输出结果
#!/bin/shtest(){echo $1 #接收第一个参数echo $2 #接收第二个参数echo $3 #接收第三个参数echo $# #接收到参数的个数echo $* #接收到的所有参数 } test aa bb cc
定义了一个需要传递参数的函数
$echo result > file #将结果写入文件,结果不会在控制台展示,而是在文件中,覆盖写 $echo result >> file #将结果写入文件,结果不会在控制台展示,而是在文件中,追加写echo input < file #获取输入流
#!/bin/bashecho "-------Begin-------"git add . git commit -m $1echo $1git push origin masterecho "--------End--------"
以上便是我对shell知识的总结,欢迎大家点心,评论,一起讨论~~
以上是Shell腳本該怎麼使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!