groovy笔记

来源:互联网 发布:java程序设计竞赛 编辑:程序博客网 时间:2024/05/18 01:25
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 的判断式时,必须要注意中括号的两端需要有空白字元来分隔喔! 假设我空白键使用‘□’符号来表示,那么,在这些地方你都需要有空白键:
0 0
原创粉丝点击