精华内容
下载资源
问答
  • 循环执行shell脚本

    千次阅读 2017-04-15 18:20:06
    /////////////////////////////////////////////////////////////////////////////////////////////////////循环执行shell脚本 #$language = "VBScript" #$interface = "1.0" crt.Screen.Synchronous = False  ...

    /循环执行shell脚本
    #$language = "VBScript"
    #$interface = "1.0"
    crt.Screen.Synchronous = False 
    Sub Main
    set fs  = createobject("scripting.filesystemobject")
    Set conf = crt.OpenSessionConfiguration("10.0.0.1")
    Set tab = conf.ConnectInTab()
    Dim logfile
    logfile = "E:\ALFT\Log\ALFT_20170411145534.log"
    crt.Session.LogFileName = logfile
    crt.Session.Log false
    DO While true
    crt.Screen.WaitForString "root@LTE-GW:~#"
    ;暂停1秒钟
    crt.sleep 1000
    crt.Screen.Send AAAA
    crt.Screen.WaitForString "root@LTE-GW:~#"
    crt.Screen.Send BBBB
    crt.Screen.WaitForString "root@LTE-GW:~#"
    crt.Screen.Send CCCC
    crt.Screen.WaitForString "root@LTE-GW:~#"
    crt.Screen.Send DDDD
    loop
    crt.Screen.Synchronous = False
    crt.Session.Log False
    crt.Session.Disconnect
    crt.quit
    End Sub


    借助终端工具SecuretCRT.exe

    通过cmd命令执行这个shell脚本,mySystem(ini_securecrtPath,_T("/script Log/alft.vbs"),2);



    展开全文
  • 什么是Shell脚本shell...shell脚本就像早期dos年代的.bat,最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell脚本更是提供了数组、循环、条件以及逻辑判断等重要功能,...

    2646abe05a3e1dffc80a49b38a5f5df6.png

    什么是Shell脚本

    shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,达到所想要的处理目的。

    shell脚本就像早期dos年代的.bat,最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell脚本更是提供了数组、循环、条件以及逻辑判断等重要功能,让使用者可以直接以shell来写程序。

    基本结构

    #!/bin/bash

    这句话的作用是标明我以下写的脚本使用的是BASH语法,只要写的是基于BASH的Shell脚本都应该这样开头。

    在Linux中默认的Shell环境就是BASH,所以在Linux里面不加这一句也可以运行。如果把脚本放在默认环境不是BASH的环境中运行,又或者编写脚本的不是纯BASH语言,而是嵌入了其他语言,那么这个脚本就不能正确执行了。所以Shell脚本都必须以“#!/bin/bash”开头。

    注释

    在Shell脚本中,除“#!/bin/bash”这行外,其他行只要以“#”开头的都是注释。

    程序的主体

    Linux的命令可以直接在脚本中执行。

    执行脚本

    赋予执行权限,直接运行

    这种方法是最常用的Shell脚本运行方法,也最为直接简单。就是赋予执行权限之后,直接运行。当然,运行时可以使用绝对路径,也可以使用相对路径。

    如果将shell.sh放在PATH指定的目录内,这样就可以像Linux系统命令一样,不用指定路径直接运行了。

    赋予执行权限:

    1 [root@localhost sh]# chmod 755 shell.sh

    使用绝对路径执行:

    1 [root@localhost sh]# /root/sh/shell.sh

    使用相对路径执行:

    1 [root@localhost sh]# ./shell.sh

    通过bash命令调用运行脚本

    这种方法的意思是直接使用bash或者sh去解释脚本中的内容,所以这个脚本也可以正常运行。使用这种方法运行脚本,甚至不需要脚本文件有“执行”权限,只要拥有“读”权就可以运行了。

    因为/bin/sh其实就是/bin/bash的一个链接,使用 sh shell.sh 就是告诉系统想要直接以bash的功能来执行shell.sh。

    使用bash命令执行:

    1 [root@localhost sh]# bash shell.sh 2 [root@localhost sh]# sh shell.sh

    使用source命令执行

    source命令或者“.”命令可以读入脚本并执行脚本,即在当前Shell环境中加载并执行的相关脚本文件的命令及语句,而不是产生一个子Shell来执行文件中的命令。

    该命令主要用于让重新配置的环境变量配置文件强制生效。

    使用source命令执行:

    1 [root@localhost sh]# . shell.sh 2 [root@localhost sh]# source shell.sh

    编写一个脚本并执行

    编写脚本

    使用vim命令创建并修改脚本文件:

    1 [root@localhost ~]# vim test.sh

    在vim编辑器里输入脚本内容并保存:

    1 #!/bin/bash 2 echo "Hello World"

    执行脚本

    使用sh命令执行脚本:

    1 [root@localhost ~]# sh test.sh 2 Hello Word 3 [root@localhost ~]#

    嵌入式物联网资料分享交流群:707159742 入群有全套学习视频资料电子书免费赠送!

    参考资料:

    shell脚本-变量_Linux 基础_JAVA架构师www.makeru.com.cn
    cce651994c1dcc9084eef78546721a2e.png
    shell基本系统维护命令_Linux 基础_JAVA架构师www.makeru.com.cn
    9c90afc01135cdd7c951159797dfa366.png
    Linux介绍_Linux 基础_JAVA架构师www.makeru.com.cn
    9c90afc01135cdd7c951159797dfa366.png
    展开全文
  • android执行shell脚本

    万次阅读 2018-04-17 15:52:49
    在做Android应用时,经常需要执行shell脚本,以快速实现某些功能;在Android应用程序中执行shell脚本可以省去一大堆繁琐的代码,还可以避免不必要的错误;比如:拷贝文件夹时,可以执行shell命令中的 cp 命令达到...

    在做Android应用时,经常需要执行shell脚本,以快速实现某些功能;

    在Android应用程序中执行shell脚本可以省去一大堆繁琐的代码,还可以避免不必要的错误;

    比如:拷贝文件夹时,可以执行shell命令中的 cp 命令达到目的;而在代码中实现拷贝文件夹时,不仅需要编写一大堆繁琐的代码,还容易陷入递归死循环的错误中;

    比如:获取文件系统的读写权限,只需要执行shell脚本中一句 mount -o rw,remount / 就能轻松搞定;

    比如:删除文件夹下某一个文件、或者某一类文件、或者全部文件,只需要执行shell脚本中的一句 rm -f  *(利用*通配符进行匹配) 就能轻松搞定;

    再比如:静默安装时,只需要执行shell脚本中一句 pm install -r 便可达到目的;

    如果这些都用代码来实现,不仅代码量增加,还容易造成很多bug,吃力不讨好!


    如果能在android应用中执行shell脚本来达到目的,可以省去一大堆代码,避免很多易犯的错误,简洁高效,何乐而不为呢?!


    下面给出一个在Android应用中执行shell脚本的工具类的示例,供大家参考:

    [java] view plain copy
    1. package com.example.test;  
    2.   
    3. import java.io.BufferedReader;  
    4. import java.io.DataOutputStream;  
    5. import java.io.IOException;  
    6. import java.io.InputStreamReader;  
    7.   
    8. import android.util.Log;  
    9.   
    10. /** 
    11.  * 执行shell脚本工具类 
    12.  * @author Mountain 
    13.  * 
    14.  */  
    15. public class CommandExecution {  
    16.   
    17.     public static final String TAG = "CommandExecution";  
    18.       
    19.     public final static String COMMAND_SU       = "su";  
    20.     public final static String COMMAND_SH       = "sh";  
    21.     public final static String COMMAND_EXIT     = "exit\n";  
    22.     public final static String COMMAND_LINE_END = "\n";  
    23.   
    24.     /** 
    25.      * Command执行结果 
    26.      * @author Mountain 
    27.      * 
    28.      */  
    29.     public static class CommandResult {  
    30.         public int result = -1;  
    31.         public String errorMsg;  
    32.         public String successMsg;  
    33.     }  
    34.   
    35.     /** 
    36.      * 执行命令—单条 
    37.      * @param command 
    38.      * @param isRoot 
    39.      * @return 
    40.      */  
    41.     public static CommandResult execCommand(String command, boolean isRoot) {  
    42.         String[] commands = {command};  
    43.         return execCommand(commands, isRoot);  
    44.     }  
    45.   
    46.     /** 
    47.      * 执行命令-多条 
    48.      * @param commands 
    49.      * @param isRoot 
    50.      * @return 
    51.      */  
    52.     public static CommandResult execCommand(String[] commands, boolean isRoot) {  
    53.         CommandResult commandResult = new CommandResult();  
    54.         if (commands == null || commands.length == 0return commandResult;  
    55.         Process process = null;  
    56.         DataOutputStream os = null;  
    57.         BufferedReader successResult = null;  
    58.         BufferedReader errorResult = null;  
    59.         StringBuilder successMsg = null;  
    60.         StringBuilder errorMsg = null;  
    61.         try {  
    62.             process = Runtime.getRuntime().exec(isRoot ? COMMAND_SU : COMMAND_SH);  
    63.             os = new DataOutputStream(process.getOutputStream());  
    64.             for (String command : commands) {  
    65.                 if (command != null) {  
    66.                     os.write(command.getBytes());  
    67.                     os.writeBytes(COMMAND_LINE_END);  
    68.                     os.flush();  
    69.                 }  
    70.             }  
    71.             os.writeBytes(COMMAND_EXIT);  
    72.             os.flush();  
    73.             commandResult.result = process.waitFor();  
    74.             //获取错误信息  
    75.             successMsg = new StringBuilder();  
    76.             errorMsg = new StringBuilder();  
    77.             successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));  
    78.             errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));  
    79.             String s;  
    80.             while ((s = successResult.readLine()) != null) successMsg.append(s);  
    81.             while ((s = errorResult.readLine()) != null) errorMsg.append(s);  
    82.             commandResult.successMsg = successMsg.toString();  
    83.             commandResult.errorMsg = errorMsg.toString();  
    84.             Log.i(TAG, commandResult.result + " | " + commandResult.successMsg  
    85.                     + " | " + commandResult.errorMsg);  
    86.         } catch (IOException e) {  
    87.             String errmsg = e.getMessage();  
    88.             if (errmsg != null) {  
    89.                 Log.e(TAG, errmsg);  
    90.             } else {  
    91.                 e.printStackTrace();  
    92.             }  
    93.         } catch (Exception e) {  
    94.             String errmsg = e.getMessage();  
    95.             if (errmsg != null) {  
    96.                 Log.e(TAG, errmsg);  
    97.             } else {  
    98.                 e.printStackTrace();  
    99.             }  
    100.         } finally {  
    101.             try {  
    102.                 if (os != null) os.close();  
    103.                 if (successResult != null) successResult.close();  
    104.                 if (errorResult != null) errorResult.close();  
    105.             } catch (IOException e) {  
    106.                 String errmsg = e.getMessage();  
    107.                 if (errmsg != null) {  
    108.                     Log.e(TAG, errmsg);  
    109.                 } else {  
    110.                     e.printStackTrace();  
    111.                 }  
    112.             }  
    113.             if (process != null) process.destroy();  
    114.         }  
    115.         return commandResult;  
    116.     }  
    117.       
    118. }  
    展开全文
  • 平时工作中,主要任务是改代码,然后才是写代码,很多代码可以...示例代码想要实现的目标:1, 有0-9, 10个文件夹2, 依次进入文件夹, 执行run.sh脚本, 因为运行时间长, 想用nohup run.sh &放到后台, 同时保存运...

    平时工作中,主要任务是改代码,然后才是写代码,很多代码可以复用,很多分析可以批量进行。今天介绍一下在Linux下批量执行代码的方法。复杂的可以用snakemake编写定义规则,简单的用shell直接写就可以。

    示例代码

    想要实现的目标:
    1, 有0-9, 10个文件夹
    2, 依次进入文件夹, 执行run.sh脚本, 因为运行时间长, 想用nohup run.sh &放到后台, 同时保存运行日志nohup.out

    1for i in  [0-9]*; #1
    2    do 
    3    cd $i#2
    4    nohup run.sh &; #2
    5    cd ../;
    6done

    报错
    因为我中间用了&符号, 提前进入后台, 无法进入下一个循环。

    如果不用&, 那么就是顺序执行,不能批量进行。

    1for i in  [0-9]*; #1
    2    do 
    3    cd $i#2
    4    nohup run.sh; #2
    5    cd ../;
    6done

    成功代码

    1for i in  [0-9]*; #1
    2    do 
    3    cd $i#2
    4    echo "nohup run.sh &" | bash; #2
    5    cd ../;
    6done

    这里, nohup一行命令, 先用echo打印, 完整的命令nohup run.sh &,然后用| bash执行前面的命令,这样的方式就可以实现我想达到的目的。

    写成一行的代码

    1for i in  [0-9]*; do  cd $i;   echo "nohup run.sh &" | bash;   cd ../;done

    祝你成功!

    eae26f5637d9f930131bb236c0de7b43.png

    R语言与python对数据框的操作(对比笔记)

    学习Julia与弯道超车

    Julia1.1学习笔记:从入门到放弃

    个人感想:

    由调代码,到改代码,到写代码,到批量进行。能力升级才有更高前景,产业升级才有更好发展,中国2025计划!

    国家如此,个人亦如此。

    展开全文
  • Shell脚本执行mysql的几种方式(转) Shell脚本执行mysql的几种方式(转) 对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本.本文描述了在Linux环境下mysql数据库中,shell脚本下调用 ... ...
  • shell脚本循环执行任务的脚本

    千次阅读 2016-06-19 21:04:39
    #! /bin/sh while true; do ./test.sh > test.txt; sleep 3; done 最近研究了下shell,如上true代表循环执行 do 后接执行命令 sleep沉睡时间 done结束
  • shell 循环执行sql脚本

    2021-03-10 15:11:39
    线上批量更新,数量过多,流程上必须写脚本,就试着先写个简单的,逻辑: 每次更新一条,根据id逐条更新。 后续其实可以优化为分页批量执行(limit x,y 或者 where id < last and id >= id +1000),效率会...
  • shell循环执行脚本

    千次阅读 2018-08-17 11:57:26
    shell循环执行脚本 2017年08月24日 15:28:18 阅读数:215 for i in {1..10}  do  echo "Welcome $i times"  eoo$i.sh  done
  • linux定时执行shell脚本

    2021-04-08 15:31:16
    linux定时执行shell脚本 写一个shell脚本,定时执行简单示例 很多时候我们有希望服务器定时去运行一个脚本来触发一个操作,比如说定时去备份服务器数据、数据库数据等 不适合人工经常做的一些操作这里简单说下 Shell...
  • 也就是在shell脚本里内置了多条命令,语句,循环控制,然后将这些命令一次性执行完毕,这种通过文件执行命令的方式称为非交互式 二、为什么使用shell脚本? 适合处理操作系统底层的业务,有众多系统命令为其做...
  • 在做Android应用时,经常需要执行shell脚本,以快速实现某些功能; 在Android应用程序中执行shell脚本可以省去一大堆繁琐的代码,还可以避免不必要的错误; 比如:拷贝文件夹时,可以执行shell命令中的 cp 命令达到...
  • Android apk执行shell脚本 工具类

    千次阅读 2018-02-27 17:10:10
    在做Android应用时,经常需要执行shell脚本,以快速实现某些功能; 在Android应用程序中执行shell脚本可以省去一大堆繁琐的代码,还可以避免不必要的错误; 比如:拷贝文件夹时,可以执行shell命令中的 cp 命令...
  • 多线程执行for循环shell脚本

    万次阅读 2017-12-29 15:22:48
    需求:并发检测1000台web服务器状态(或者并发为1000台web服务器分发文件等...思路:一个for循环1000次,顺序执行1000次任务。 实现: #!/bin/bash start_time=`date +%s` #定义脚本运行的开始时间 for ((i=
  • 参考资料:Shell脚本执行mysql语句 需求:数据库里有张数据表存储的是用户对电影的评价(user_id movie_id rating time),但是我现在要每部电影的总评分。 解决方法: 1)、写个sql文件test.sql:use movie_...
  • 首先说明,我现在要解决的两个问题:1、如果要调用的Shell脚本是常驻内存,也就是说里面有循环不会结束的脚本,我用Java方法调用,但是不能等Shell执行完成,即调用执行一下后,我的Java方法要结束,同时还要保证...
  • 在开发中,怎样编写脚本输入开始月份、结束月份自动跑数呢? 对shell中getopts不懂的请查看我以前博客 shell中的getopt 提供以下脚本供参考: #!/bin/sh #************************...#*** 程序功能: 按天循环导入分...
  • For循环和java中的for是一样的都是循环与其他编程语言类似,Shell支持for循环。for循环的作用:依次遍历列表中的值,直到终止或遍历完成for循环一般格式为:for var in item1 item2 ... itemNdo command1 command2 ....
  • aming_linux blog.lishiming.net 可以使用逻辑判断、循环等语法 可以自定义函数 shell是系统命令的集合 shell脚本可以实现自动化运维,能大大增加我们的运维效率2,shell脚本结构和执行 开头需要加#!/bin/bash ...
  • 多线程执行shell脚本

    千次阅读 2017-12-28 10:33:50
    Linux下模拟多线程的并发并发shell脚本  分享一个在Linux下模拟多线程的并发脚本,使用这个脚本可以同时批量在定义数量的服务器上执行相关命令,比起普通for/while循环只能顺序一条一条执行的效率高非常多...
  • 什么是Shell脚本shell...shell脚本就像早期dos年代的.bat,最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell脚本更是提供了数组、循环、条件以及逻辑判断等重要功能,...
  • 循环对于任何编程语言执行重复的语句都非常有用。for循环也可用于bash脚本。在本文中,我们将介绍关于for循环的用法及示例。语法:for VARIABLE in PARAM1 PARAM2 PARAM3do// commands to executedone在上面的语法中...
  • shell 脚本介绍 shell是一种脚本语言 aming_linux blog.lishiming.net 可以使用逻辑判断、循环等语法 可以自定义函数 shell是系统命令的集合 ...Shell脚本结构和执行 开头(首行)需要加: #!/bin/b...
  • 在开发中,经常会遇到重刷以前脚本或提取以前数据,由于数据量极大,集群资源不够,只能按小时跑数据,怎样编写脚本输入开始日期、开始小时、结束日期、结束小时自动跑数呢? 提供以下脚本供参考: #!/bin/sh #*****...
  • 1、如果要调用的Shell脚本是常驻内存,也就是说里面有循环不会结束的脚本,我用Java方法调用,但是不能等Shell执行完成,即调用执行一下后,我的Java方法要结束,同时还要保证Shell已经运行了;  2、用Java调用后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,934
精华内容 773
关键字:

循环执行shell脚本