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 ----當前程序的名稱
? ? ? ? ?$@----以"參數1" "參數2" ... 形式保存所有參數
? ? ? ? ?$$ ----本程序的(進程ID號)PID
? ? ? ? ?$! ----上一個命令的PID
?
3. http://wenku.baidu.com/link?url=Z-pr1h3t8ZoZuD7sodGH76rQ5f8pMU0JkLqFyyUZBzSns4VcfBVe7fDwlJC3iZdCfuI2N69jTzx1ztu9LJGjGQFyeQS-cHtOVaD5MP6pvOe
判斷式當中使用了兩個等號‘ == ’。其實在 bash 當中使用一個等號與兩個等號的結果是一樣的! 不過在一般慣用程式的寫法中,一個等號代表‘變數的設定’,兩個等號則是代表‘邏輯判斷 (是否之意)’。 由于我們在中括號內重點在于‘判斷’而非‘設定變數’
-a 表示 與 , ?-o ?表示 或
使用中括號必須要特別注意,因為中括號用在很多地方,包括萬用字元與正規表示法等等,所以如果要在 bash 的語法當中使用中括號作為 shell 的判斷式時,必須要注意中括號的兩端需要有空白字元來分隔喔! 假設我空白鍵使用‘□’符號來表示,那么,在這些地方你都需要有空白鍵:
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 ----當前程序的名稱
? ? ? ? ?$@----以"參數1" "參數2" ... 形式保存所有參數
? ? ? ? ?$$ ----本程序的(進程ID號)PID
? ? ? ? ?$! ----上一個命令的PID
?
3. http://wenku.baidu.com/link?url=Z-pr1h3t8ZoZuD7sodGH76rQ5f8pMU0JkLqFyyUZBzSns4VcfBVe7fDwlJC3iZdCfuI2N69jTzx1ztu9LJGjGQFyeQS-cHtOVaD5MP6pvOe
判斷式當中使用了兩個等號‘ == ’。其實在 bash 當中使用一個等號與兩個等號的結果是一樣的! 不過在一般慣用程式的寫法中,一個等號代表‘變數的設定’,兩個等號則是代表‘邏輯判斷 (是否之意)’。 由于我們在中括號內重點在于‘判斷’而非‘設定變數’
-a 表示 與 , ?-o ?表示 或
使用中括號必須要特別注意,因為中括號用在很多地方,包括萬用字元與正規表示法等等,所以如果要在 bash 的語法當中使用中括號作為 shell 的判斷式時,必須要注意中括號的兩端需要有空白字元來分隔喔! 假設我空白鍵使用‘□’符號來表示,那么,在這些地方你都需要有空白鍵:
總結
- 上一篇: 如何查看Eclipse版本
- 下一篇: Eclipse集成Groovy插件