1. 檔案查找指定字元串并替換:
println "modify AndroidManifest.xml start!"
def reg = this.args[0] //'android.intent.category.LAUNCHER';
def replaceStr = this.args[1]
println "args[0] = " + reg
println "args[1] = " + replaceStr
def newText = new StringBuffer();
try {
def manifestFile = new File("AndroidManifest.xml")
fileText = manifestFile.text;
manifestFile.eachLine { line ->
// println (line.contains(reg))
if (line.contains(reg)) {
line = line.replaceAll(line,replaceStr)
println "replace string successfully"
}
// println line
newText.append(line);
newText.append('\n');
}
manifestFile.write(newText.toString());
manifestFile.eachLine { line2 ->
println line2
}
} catch (FileNotFoundException e) {
println "modify AndroidManifest.xml error!"
}
println "modify AndroidManifest.xml end!"
2. SH 腳本方法傳參: (不能在括号内定義參數,是運作時傳參數個數)
如:
function groovyFuncReplaceAndroidManifest()
{
regex = $1
replaceStr = $2
cp AndroidManifest.xml AndroidManifest.groovy
groovy update_manifest_modify.groovy regex replaceStr
}
執行sh 内函數不帶()
如: groovyFuncReplaceAndroidManifest "android.intent.category.LAUNCHER" ""
$# ----傳遞給程式的總的參數數目
$? ----上一個代碼或者shell程式在shell中退出的情況,如果正常退出則傳回0,反之為非0值。
$* ----傳遞給程式的所有參數組成的字元串。
$n ----表示第幾個參數,$1 表示第一個參數,$2 表示第二個參數 ... $0 ----目前程式的名稱
[email protected]以"參數1" "參數2" ... 形式儲存所有參數
$$ ----本程式的(程序ID号)PID
$! ----上一個指令的PID
3. http://wenku.baidu.com/link?url=Z-pr1h3t8ZoZuD7sodGH76rQ5f8pMU0JkLqFyyUZBzSns4VcfBVe7fDwlJC3iZdCfuI2N69jTzx1ztu9LJGjGQFyeQS-cHtOVaD5MP6pvOe
判斷式當中使用了兩個等号‘ == ’。其實在 bash 當中使用一個等号與兩個等号的結果是一樣的! 不過在一般慣用程式的寫法中,一個等号代表‘變數的設定’,兩個等号則是代表‘邏輯判斷 (是否之意)’。 由于我們在中括号内重點在于‘判斷’而非‘設定變數’
-a 表示 與 , -o 表示 或
使用中括号必須要特别注意,因為中括号用在很多地方,包括萬用字元與正規表示法等等,是以如果要在 bash 的文法當中使用中括号作為 shell 的判斷式時,必須要注意中括号的兩端需要有空白字元來分隔喔! 假設我空白鍵使用‘□’符号來表示,那麼,在這些地方你都需要有空白鍵: