主要是整apk gradle 打包上傳蒲公英時用到了shell ,順便記錄下
一、基本
1. 宣告直譯器
shell 種類很多,需要宣告直譯器,一般第一行這樣寫 #!/bin/bash
#!/bin/bash
echo "hello world"
#! 是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種 shell
2.注釋
使用 # 開頭即為注釋
# 這是乙個注釋
3. 執行shell指令碼
3.1 作為可執行程式執行,比如執行 test.sh
chmod +x ./test.sh #使指令碼具有執行許可權
./test.sh #執行指令碼,注意以 . 開始
3.2 作為直譯器引數執行
/bin/sh test.sh
二、shell 語法雜燴
1. 變數定義
temp="測試用的文字"
temp="test string"
# "="符號左右不能有空格
2. 使用變數
使用$符合取值
temp="測試用的文字"
echo $temp
echo $
# 輸出:測試用的文字
這裡可以加 ,也可以不加
用來確定邊界, 一般習慣性要加,這樣好閱讀理解
3. 強大的 ${}
# 乙個"#",表示從左起第乙個指定字元
## 兩個"#",表示從左起最後乙個指定字元 %
乙個"%",表示從右起第乙個指定字元 %%
兩個"%",表示從右起最後乙個指定字元
* "*",表示要刪除的字元,從左查則寫左刪左,從右查則寫右刪右,這裡互換無效
#!/bin/bash
temp="應用名稱v1.0.0_build10_release.apk"
echo $
# 輸出:應用名稱v1.0.0_build10_release.apk
echo $
# 乙個"#",表示從左起第乙個「_」字元
# 輸出:build10_release.apk
echo $
# 兩個"#",表示從左起最後乙個「_」字元
# 輸出:release.apk
echo $
# 乙個"%",表示從右起第乙個「_」字元
# 輸出:應用名稱v1.0.0_build10
echo $
# 兩個"%",表示從右起最後乙個「_」字元
# 輸出:應用名稱v1.0.0
# 聯合運用,取出build大小
temp=$
temp=$
echo $
# 輸出:10
4. basename 獲取檔名
temp="/desktop/test.sh"
echo $(basename $)
# 輸出:test.sh
5. dirname 獲取目錄
temp="/lxmy/desktop/test.sh"
echo $(dirname $)
# 輸出:/lxmy/desktop
6. 運算子
6.1 字串運算子
= 檢查字串是否相同,相同返回true
!= 檢查字串是否相同,不同返回true
-z 檢查字串長度是否為0,為0返回true
-n 檢查字串長度是否不為0,不為0返回true
7. if、if else
注意:shell 指令碼中, 流程控制不能為空,簡單點說,寫了if,裡面就得寫東西,else 也一樣,不能為空
if 開頭,fi 結尾,注意 if 中括號裡要加空格隔開
temp="abcd"
if [ -z "$temp" ]; then # 判斷是否為空
echo "空的"
fiif [ -z "$temp" ]; then # 判斷是否為空
echo "空的"
else
echo "有內容"
fi
#!/bin/bash
temp="abcd"
if [ $temp ]
then # 判斷是否為空
echo "有內容"
else
echo "空的"
fi
參看end
linux用shell指令碼模擬時鐘 指令碼錄製
bin bash this is a clock,it will display time once a second,in the same position file name clock.sh tput sc while true do echo n date sleep 1 tput rc ...
簡單的shell指令碼
bin bash set x count 1 port 10125 ip 125 pre 100 dir pwd destination home while count le 3 dodir expr pre count reip ip report port mkdir dir sed e s ...
shell指令碼簡單命令
shell 命令直譯器 處於系統核心和使用者之間負責解釋命令列的 登入之後預設的shell程式是 bin bash 不同的shell內部指令,執行環境會有所區別 常見的shell bin sh bin bash sbin nologin bin bash 是指這個指令碼是用 bin bash來解釋執...