前言

文章寫作週期:4月3日晚上9點左右開始11點結束。整個過程比較順利...沒有被其他奇奇怪怪的內容吸引~

說實話,寫腳本這一塊屬實“業務不精”,一來現如今的工具已經比較方便了,二來自己還是比較懶。

正巧最近再嘗試公司的雲編譯功能,雖然雲編譯插件自動做了大量的工作,但是最終也只是把產物(apk)拉到本地某文件目錄下,因此還是需要我們主動要install。

因此基於這個場景就像寫一個腳本可以一鍵的把拉下的apk安裝上。

腳本需要的能力:

找到某文件路徑下最新的apkinstall這個apk然後打開主Activitiy

正文

接下來咱們就開整!不過...開篇咱也說了“業務不精”,所以Shell還真不會寫。那麼咱們第一步就是先學一學Shell的語法。

一、Shell基礎

開啓語法的瞭解前,咱們先聊一聊什麼是Shell。

1.1、什麼是Shell

首先要明確一下,Shell是通用的概念,用來代指操作系統中的命令解釋器(command interpretor)。可以簡單的理解成“命令行”。

用過無GUI界面的Linux系統的同學應該都清楚,我們能夠和操作系統打交道的方式只能通過輸入命令。

而這個承接咱們輸入的命令並通知操作系統去執行對應操作的工具就被稱之爲Shell

但是通常咱們聊的Shell一般都是Linux下的,因爲Linux下的Shell處理能充當命令解釋器的作用,還擁有自己的編程語言,因此極具擴展性。咱們的Shell腳本也是依賴了這種編譯能力...

當然,Shell的強大遠不止如此。更多能力就由大家去探索了~

1.2、Shell的基礎語法

變量:

Shell中的變量定義有些“蛋疼”...不聲明任何類型,上來就是幹:name="Shell",name就是一個變量。

這裏還有一個更“詭異”的規定:=左右不能有空格!這個點坑了我很久name="Shell",這種聲明是錯誤的!當我們使用變量的時候,需要加一個$符。比如我們想要打印上面定義的name,我們需要這樣:echo $name。

說到了$,咱們額外說一些內容:``,$(),${}的區別。

它倆``,$()屬於一類:命令的替換。這裏如何理解呢?說白了就是把寫在這裏內容的結果拿出來(就想咱們調用函數,拿返回值一樣)。

因此有些時候,我們可能不是爲了執行某些命令,而是爲了拿到命令對應的值,因此這種情況下就需要這種方式。

而${}和咱們日常是類似的,就是用{}的內容來替換這裏。

腳本參數的獲取

咱們一般執行在執行命令的時候都會遇到一些參數的輸入,對於Shell腳本也是如此。想要拿到用戶輸入的參數怎麼辦?

直接這個樣子:$1,這中寫法的意思就是拿到第一個參數,沒錯$2就是拿到第二個參數...

函數

函數的定義也是比較神奇,無需主動聲明參數和返回值:

這裏定義了一個函數,可以看到函數體沒有參數和返回值的信息。我們要怎麼調用呢?

這裏可能有同學注意到$?這個“奇怪”的調用,它的作用就是拿到上述函數的return。這裏也是Shell裏“蛋疼”的一點...

運行這個腳本後,效果是這樣的:

二、按需寫腳本

有了這些基礎咱們想要完成咱們需要額腳本就比較簡單了。這裏我先直接貼代碼:

這樣,一個簡單的腳本就ok了~它能做的事情:從一個目錄下邊找到一個最近修改的文件然後執行install,在start對應的Activity。

尾聲

Shell腳本還挺有意思,的確可以很簡單的幫我們做很多重複的工作。

學無止境,學無止境~

相關文章