Android 讲述执行怎样执行shell脚本.doc

上传人:pu****.1 文档编号:551675638 上传时间:2023-03-29 格式:DOC 页数:4 大小:32KB
返回 下载 相关 举报
Android 讲述执行怎样执行shell脚本.doc_第1页
第1页 / 共4页
Android 讲述执行怎样执行shell脚本.doc_第2页
第2页 / 共4页
Android 讲述执行怎样执行shell脚本.doc_第3页
第3页 / 共4页
Android 讲述执行怎样执行shell脚本.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《Android 讲述执行怎样执行shell脚本.doc》由会员分享,可在线阅读,更多相关《Android 讲述执行怎样执行shell脚本.doc(4页珍藏版)》请在金锄头文库上搜索。

1、由麦可网整理,转载请注明出处Android 讲述执行怎样执行shell脚本1. 新建自己的shell文件,或者中windows上传例如: d:x.sh#! /system/bin/sh#最简单的一个shell,没什么功能#需要注意的是必须是 #! /system/bin/sh开头(有空格)#和一般linux不同,如果用#!/bin/sh就会找不到(因为没有)在cmd中用adb push d:x.sh /data/kenshin上传shell第一个参数是本地文件位置,第二个是远程位置(也就是放在Android中的位置),在根目录的data目录下,kenshin是我自己创建的一个文件夹. 如果失败

2、了,说是只有只读权限的话,需要修改文件夹的权限.具体如下:进入adb shell,使用mount命令查看挂了哪些块.Java代码:C:Documents and SettingsKenshintangadb shell# mountmountrootfs / rootfs ro 0 0tmpfs /dev tmpfs rw,mode=755 0 0devpts /dev/pts devpts rw,mode=600 0 0proc /proc proc rw 0 0sysfs /sys sysfs rw 0 0tmpfs /sqlite_stmt_journals tmpfs rw,size=

3、4096k 0 0/dev/block/mtdblock0 /system yaffs2 ro,noatime,nodiratime 0 0/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0复制代码比如/dev/block/mtdblock0 /system就是只读的,/dev/block/mtdblock1 /data是读写的修改读写权限用mount命令例如 mount -t yaffs2 -o remount,rw,noatim

4、e,nodiratime /dev/mtdblock0 /system-o选项用来描述设备或者档案的挂接方式,常用的有loop:用来把一个文件当成硬盘分区挂接上系统ro:采用只读方式挂接设备rw:采用读写方式挂接设备具体的用法可以google linux命令mout的用法.上面那句话的意思就是让/system文件夹有读写的权限2. cd到shell所在的文件夹,查看x.sh的权限,一般上传上去的话是没有执行权限的,可以用ls -l查看使用chmod 777 x.sh增加权限,具体可以google chmod的用法.3. 执行 ./x.sh4. 如何在程序中执行shellJava代码:Java代

5、码 1 packageeoe.kenshin.hellocommand; 2345 importjava.io.BufferedReader; 67 importjava.io.IOException; 89 importjava.io.InputStream; 1011 importjava.io.InputStreamReader; 1213 importandroid.app.Activity; 1415 importandroid.os.Bundle; 1617 importandroid.widget.TextView; 181920212223 publicclassHelloCo

6、mmandextendsActivity 2425 /*Calledwhentheactivityisfirstcreated.*/2627 privateTextViewtv; 28293031 Override3233 publicvoidonCreate(BundlesavedInstanceState) 3435 super.onCreate(savedInstanceState); 3637 setContentView(R.layout.main); 3839 tv=(TextView)findViewById(R.id.tv01); 40414243 try 4445 execC

7、ommand(./data/kenshin/x.sh); 4647 catch(IOExceptione) 4849 /TODOAuto-generatedcatchblock 5051 e.printStackTrace(); 5253 5455 56575859 publicvoidexecCommand(Stringcommand)throwsIOException 6061 /startthelscommandrunning 6263 /Stringargs=newStringsh,-c,command; 6465 Runtimeruntime=Runtime.getRuntime()

8、; 6667 Processproc=runtime.exec(command);/这句话就是shell与高级语言间的调用 6869 /如果有参数的话可以用另外一个被重载的exec方法 7071 /实际上这样执行时启动了一个子进程,它没有父进程的控制台 7273 /也就看不到输出,所以我们需要用输出流来得到shell执行后的输出 7475 InputStreaminputstream=proc.getInputStream(); 7677 InputStreamReaderinputstreamreader=newInputStreamReader(inputstream); 7879 Buf

9、feredReaderbufferedreader=newBufferedReader(inputstreamreader); 8081 /readthelsoutput 8283 Stringline=; 8485 StringBuildersb=newStringBuilder(line); 8687 while(line=bufferedreader.readLine()!=null) 8889 /System.out.println(line); 9091 sb.append(line); 9293 sb.append(n); 9495 96979899 tv.setText(sb.t

10、oString(); 100101 /使用exec执行不会等执行成功以后才返回,它会立即返回 102103 /所以在某些情况下是很要命的(比如复制文件的时候) 104105 /使用wairFor()可以等待命令执行完成以后才返回 106107 try 108109 if(proc.waitFor()!=0) 110111 System.err.println(exitvalue=+proc.exitValue(); 112113 114115 116117 catch(InterruptedExceptione) 118119 System.err.println(e); 120121 122123 124125 126

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号