- 浏览: 830109 次
- 性别:
- 来自: 哈尔滨
文章分类
最新评论
-
doloveme:
$sudo cp MONACO_Linux.ttf /usr/ ...
terminator 的配置 -
腾讯rep:
lowser
RSA加密算法c++简单实现 -
csuhanyong:
好YD啊,好YD
一图流:机械键盘各轴区别 -
doloveme:
1。其中:extman ,extmail下载http://ww ...
Ubuntu下安装postfix+extmail邮件服务器 -
doloveme:
repo sync出现“fatal: '../platform ...
Android 编译环境配置搭建(Ubuntu 12.04)及环境导致编译错误QA
JAVA中
protected void onPostExecute(Integer result) { if (bBackground) { // 启动安装程序 if (0 == result) { String path = FileUtils.getSDPATH(HActivity.this) + "mapp.apk"; chmod("777", path); File apkFile = new File(path); if (apkFile.exists()) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive"); startActivity(intent); } } } else { resultFile(result); } } private static void chmod(String permission, String path) { try { String command = "chmod " + permission + " " + path; Runtime runtime = Runtime.getRuntime(); runtime.exec(command); } catch (IOException e) { e.printStackTrace(); } }
在Linux环境下工作的话,Shell脚本是经常用到,在很多其他 程序中都有可能调用到。被人问到,怎样在Ruby程序中调用Shell脚本;经过总结整理,我分别说明一下如何在Ruby、C、Java代码中怎样调用 shell脚本吧。
Ruby中调用Shell有很多种方 法;下面代码简单说明一下吧。
// 第一种 用反引号将shell命令引起来,如果是shell脚本可写上绝对路径(总之就是可以直接运行的) ipinfo=`ifconfig` puts ipinfo // 第二种 用system函数来实现 system 'echo "hello $HOSTNAME"' // 第三种 用IO类的popen方法 IO.popen("date") { |f| puts f.gets } // 第四种 用Ruby标准库open3中的方法 require "open3" stdin, stdout, stderr = Open3.popen3('date') stdin.puts('') stdout.gets stderr.gets |
http://blackanger.blog.51cto.com/140924/43730
C程序中调用shell脚本,一般通过system函数来执行shell脚本。参考代 码如下:
#include <stdlib.h> int main(int argc, char* argv[]) { system("echo 'hello world'"); system("/bin/ls /home"); } |
Java中调用Shell脚本,一般通过运行时类Runtime的方法来实现 (Runtime.getRuntime().exec),参考代码如下:
import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; public class CallShell { public static void main(String[] args) { try { // 被注释掉的这个仅仅是执行了test.sh脚本,但没有获取它的输出 // Runtime.getRuntime().exec("/home/master/workspace/shell/test.sh"); Process process = Runtime.getRuntime().exec( "/home/master/workspace/shell/test.sh"); InputStreamReader ir = new InputStreamReader(process .getInputStream()); LineNumberReader input = new LineNumberReader(ir); String line; while ((line = input.readLine()) != null) System.out.println(line); input.close(); ir.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
另外,再附带贴一个,Java调用 Shell并打印标准输出、标准错误的Java类,代码如下,供参考:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; /** * @className ShellCmdLog.java * @author 笑遍世界 * @description Java程序调用一个系统的shell脚本,并且将标准输出和标准错误打印出来 * @date 2010-11-26 */ public class ShellCmdLog extends Thread { private boolean bLog2Error; // 是否打印错误Error标志 private InputStream ins; // 待转换文件输入流 /** * @param args */ public static void main(String[] args) { // java调用shell脚本 String path = "/home/master/workspace/shell/test.sh";// 脚本位于服务器中的路径 String statement[] = { "/bin/sh", path }; try { Process process = Runtime.getRuntime().exec(statement); InputStream in = process.getInputStream(); // 获取输入流 InputStream err = process.getErrorStream();// 获取错误流 ShellCmdLog sgStdout = new ShellCmdLog(in, false); ShellCmdLog sgStderr = new ShellCmdLog(err, true); sgStdout.start(); sgStderr.start(); // final int result = process.waitFor(); // 为流读出捕获流设定的时间间隔。 Thread.sleep(100); if (process != null) { process.destroy(); } // 集合读取线程 sgStdout.join(); sgStderr.join(); } catch (Exception e) { e.toString(); } } /** * 设置是否打印错误Error,设置待转换文件的输入流 * * @param is * 待转换文件输入流 * @param flag * 是否打印错误Error标志 */ public ShellCmdLog(InputStream is, boolean flag) { super("ShellCmdStream" + (flag ? "-error" : "-out")); bLog2Error = flag; ins = is; } /** * 执行转换线程 */ public void run() { if (ins != null) { InputStreamReader isr = new InputStreamReader(ins); BufferedReader br = new BufferedReader(isr); try { String line = null; while ((line = br.readLine()) != null) { if (bLog2Error) { System.out.println("Shell_Err>" + line); } else { System.out.println("Shell_Out>" + line); } } // end of while(true) } catch (IOException ioe) { System.out.println("ShellCmdLog error:" + ioe); } finally { try { if (isr != null) { isr.close(); } } catch (IOException e) { e.printStackTrace(); } try { if (br != null) { br.close(); } } catch (IOException e) { e.printStackTrace(); } } } } } |
发表评论
-
JAVA代码混淆
2016-05-05 18:24 1454JAVA代码混淆 <!--[if !supportL ... -
android 监听状态栏被下拉
2015-12-25 17:23 3478Activity的onWindowFocusChange()方 ... -
android使用mount挂载/system/app为读写权限,删除或替换系统应用
2015-11-27 14:13 4030注意:以下代码中#开头的则为需要执行的shell命令,其他的 ... -
Ubuntu 14.04 文件服务器--samba的安装和配置
2015-11-10 10:49 640jingyan.baidu.com/album/00a07f ... -
linux生成指定大小的文件
2015-08-26 16:02 1698# dd if=/dev/zero of=50M.file ... -
intellij 打开工程在每个java文件上 有个红色的无效符
2015-07-24 13:52 1762说明该类不是可编译文件。在project Structure中 ... -
logcat命令详解
2015-07-22 16:34 985Android日志系统提供了记录和查看系统调试信息的功能。日 ... -
gradle打包遇到的错误汇总
2015-07-21 11:32 0错误1:A problem occurred ... -
Android读写XML(下)——创建XML文档
2015-04-29 11:02 619在前面的2篇文章Android读写XML(上)—— pack ... -
Android读写XML(中)——SAX
2015-04-29 10:54 625在Android读写XML(上) ... -
Android读写XML(下)——创建XML文档
2015-04-29 10:52 705在前面的2篇文章Android读写XML(上)—— pack ... -
android:configChanges locale 改语言后,该配置不起作用的原因
2015-03-23 14:38 2518@Override public void on ... -
android.app.Fragment$InstantiationException 解决办法
2015-03-23 13:46 1416android.app.Fragment$Instantia ... -
linux 查看内存
2015-02-10 13:08 7471、free监控内存使用情况 #free 2、watc ... -
android fastboot 刷机 指令
2015-01-19 18:31 1531原生bootloader:bootloader-gro ... -
[Android实例] android中进行https连接的方式的详解 (转发)
2015-01-09 15:50 699x 如果不需要验证服务器端证书, ... -
编译android源码apk是否生成odex方法
2014-10-20 17:19 1649其实Android系统默认的配置是,如果没有指定DISABL ... -
关于android源码中的APP编译时引用隐藏的API出现的问题
2014-10-20 15:36 844今天在编译android源码中的计算器APP时发现,竟然无法 ... -
Android系统进程Zygote启动过程的源代码分析
2014-09-17 10:09 508在Android系统中, ... -
Handler和HandlerThread
2014-09-16 16:58 6971.什么是Handler? SDK中关于Handler的说 ...
相关推荐
本文将深入探讨如何在Java中调用三种流行的脚本语言:Jython、JRuby和Groovy。 ### Jython Jython是Python的一个Java实现,它允许Java开发者利用Python的强大语法和丰富的库。要使用Jython,首先需要在项目中引入...
在Android开发中,Java语言是主要的编程工具,但有时候我们可能需要在应用程序中执行一些脚本代码,比如JavaScript、Python或Shell等。这通常是为了实现一些特定功能,如自动化处理、数据解析或是利用第三方库的脚本...
其次,`shadowStatusRedis.sh`则是一个Shell脚本,它可能是用来调用Ruby脚本并管理文件系统的。它可能会检查当前正在写入的文件大小,一旦超过500MB,就会关闭当前文件,创建新的文件继续写入。Shell脚本中的`awk`、...
碰到需要调用操作系统shell命令的时候,Ruby为我们提供了六种完成任务的方法: 1.Exec方法: Kernel#exec方法通过调用指定的命令取代当前进程例子: 代码如下: $ irb >> exec ‘echo “hello $HOSTNAME”‘ ...
- **可扩展性**:Ruby可以通过C语言编写扩展模块来增强功能。 - **强大的标准库**:Ruby拥有一个强大的标准库,支持多种编程任务。 #### 参考资料 - [Ruby官方网站](https://www.ruby-lang.org/) - [Ruby文档]...
Ruby的动态特性体现在其可以动态地创建类和方法,甚至可以在运行时修改现有的类和方法。 **3.8 变量** - **局部变量**:以小写字母或下划线开头的变量,作用域限于当前块。 - **实例变量**:以`@`开头的变量,属于...
Ruby是一种解释性的、面向对象的脚本语言,它以其简洁、优雅的语法和强大的功能而闻名。Ruby的设计理念强调程序员的生产力和代码的可读性,使得开发过程快速且反馈及时,非常适合进行快速原型开发和迭代。 在Ruby中...
Ruby支持动态方法定义、方法重写等特性,使得程序能够在运行时动态地改变其行为。 **3.8 变量** - **局部变量:** 在特定的作用域内有效。 - **实例变量:** 存储在对象中,对象间的实例变量相互独立。 - **类变量...
### Ruby 程序设计知识点概览 #### 一、Ruby语言概述 ##### §1.1 Ruby的历史 - **起源与发展**:Ruby是由日本程序员松本行弘(Yukihiro Matsumoto)于1995年开始开发的一种面向对象的脚本语言。它结合了Perl的...
Ruby是一种动态、面向对象的脚本编程语言,以其简洁、优雅的语法和强大的元编程能力而受到程序员的喜爱。然而,由于其原生解释器是用C语言编写的,它在某些场景下可能无法充分利用现代多核处理器的性能,或者无法很...
这些方法都很简单,本文将具体介绍一下如何在Ruby脚本中进行调用终端命令。 exec exec会将指定的命令替换掉当前进程中的操作,指定命令结束后,进程结束。 代码如下: exec ‘echo “hello world”‘ print ‘abc’ ...
2. **Shell脚本**:在Ruby中,可以使用`sh`或者`system`等方法来执行Shell命令,这使得Ruby成为编写系统管理脚本的有效工具。 3. **Alexa API**:如果项目是围绕Alexa网络信息服务,那么开发者可能使用了Alexa的API...
Shell脚本的独特优势在于它可以直接调用Linux系统中的大量内置命令,如grep、awk和sed,这使得它在处理操作系统级别的任务时尤为高效。 在Linux系统中,存在多种不同的Shell,如Bourne Shell(/bin/sh)、Bash(/...
方法是Ruby程序的核心组件之一,它们可以接受参数,并返回值。 **7.1 运算符重定义** Ruby允许重新定义运算符的行为: ```ruby class MyClass def +(other) "Result: #{self} + #{other}" end end a = ...
Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端...
`Laptop`是一个shell脚本,旨在简化在macOS笔记本电脑上配置开发环境的过程。这个脚本包含了安装和配置一系列常用工具、库和框架的指令,使开发者能够快速地将他们的macOS设备转变为高效的工作站,特别适合Web和移动...
在IT领域,尤其是在系统管理和自动化任务中,Shell脚本经常被用来处理各种任务,包括解析和操作XML数据。XML作为一种结构化的数据交换格式,广泛应用于配置文件、数据传输和存储等场景。本文将详细介绍如何利用Shell...
标题 "dots:我的shell脚本集合" 暗示了这是一个个人收集的Shell脚本集合,用于管理和优化开发环境。Shell脚本是Unix或Linux操作系统中的命令行脚本,允许用户自动化一系列系统任务,提高效率。这个集合可能包含了...
### Ruby语言概述 ...总的来说,Ruby不仅适合网络编程、Web应用开发、Shell脚本编写、数据处理和文本操作等多种任务,而且对于Python和Perl程序员来说尤其熟悉,因为Ruby在某些方面受到了Perl的启发。