天天看點

groovy筆記

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 的判斷式時,必須要注意中括号的兩端需要有空白字元來分隔喔! 假設我空白鍵使用‘□’符号來表示,那麼,在這些地方你都需要有空白鍵:

繼續閱讀