精华内容
下载资源
问答
  • IDEA中编写并运行shell脚本

    万次阅读 多人点赞 2018-07-31 09:25:37
    IEDA中的bashsupport插件支持在IDEA中编写shell脚本文件,有友好的代码格式,支持自动补全,检查错误,并且配置完之后,还可以在IEDA中直接运行shell脚本。下面将一步一步演示插件的安装和配置。 打开IEDA,安装...

            IEDA中的bashsupport插件支持在IDEA中编写shell脚本文件,有友好的代码格式,支持自动补全,检查错误,并且配置完之后,还可以在IEDA中直接运行shell脚本。下面将一步一步演示插件的安装和配置。

    1. 打开IEDA,安装bashsupport插件 
              
      安装完之后,保持插件选中并切实enable的状态,如下图所示,然后重启IDEA。
              
    2. 安装git软件。
      https://www.git-scm.com/download/
              
      基本上直接安装全部默认就可以,不过要记住自己的安装目录。
    3. IDEA配置
      如下图所示,编辑器右上角打开 Edit Configurations 。
              
      如上图所示,只需要在这儿页面中设置 Interpreter path即可,剩下的都留空。
      然后新建一个Bash Script 文件,名字自起。
                     
                     
                     
                      
              最后一个截图是设置脚本文件的换行符,设置为linux换行符,文件编码设置为UTF-8。运行脚本时要注意脚本的编码和控制台的编码是否一致,如果不一致,控制台中的中文就会变成乱码。项目编码设置方法大家百度一下,控制台编码设置方法如下:       

             在IDEA安装根目录的bin目录下找到  idea64.exe.vmoptions  或者  idea.exe.vmoptions  文件(和你电脑的操作系统位数有关),然后在最后一行加上  -Dfile.encoding=UTF-8   ,重启IDEA,控制台的编码就变成了UTF-8。
              注意,在新版本中,通过修改
        idea64.exe.vmoptions  或者  idea.exe.vmoptions  文件可能不会生效,需要通过idea界面的help->Edie Custom VM Options...选项打开配置文件,然后修改内容,重启生效,截图如下:
         
                  
              在打开的脚本编辑器空白处右击,选择运行该脚本。
                      
                      

              上图中第一行表示Windows下脚本的执行命令,如果后面文件的路径分隔符并不是Windows的分隔符,我们需要修改它。(注意新版本idea已经修复了这个问题,不需要修改即可直接执行)
              重新打开 Edit Configurations,进行如下图所示的修改:
                     
              上图配置完之后,点击OK即可。
              然后重新运行脚本,运行方法如下图所示:
                     
                    
             大功告成,如果没有成功运行,则仔细比照上面的所有截图,看看哪一步设置错误了。
    4. 其他
      注意,从2020.1版本开始,bash support已经不再更新,有可能会和之后的新版本不兼容。
      不过新出了bash support pro,但是是付费插件。pro版本开始支持debug功能,能够像运行java一样进入debug调试。这是个非常不错的新特性,当然肯定还有其他很多新特性。试用期30天,每月6.8美元,每年68美元。
      另外,2020.2版本中,已经不是bash了,而是shell script,不过剩下的都一样。
    展开全文
  • 主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下
  • shell脚本执行.sql文件: ...切换用书执行shell脚本 执行单行脚本:  su - 用户 -c 'xxx' 执行.sh文件  su - 用户 -s /bin/bash xxx.sh     拉取远程mysql数据库 mysqldump -uxxx -pxxx -P 端口号 ...

    shell脚本执行.sql文件:

    mysql -uxxx -pxxx db名 < xxx/xxx.sql

     

     

    切换用书执行shell脚本

    执行单行脚本:

       su - 用户 -c 'xxx'

    执行.sh文件

      su - 用户 -s /bin/bash xxx.sh

     

     

    拉取远程mysql数据库

    mysqldump -uxxx -pxxx -P 端口号 -h ip地址 db名 > xxx.sql

     

    展开全文
  • Golang 执行 shell 脚本,不接收返回值 // 返回一个 cmd 对象 cmd := exec.Command("sh", "-c", "./scripts/curl.sh") // 如果只执行命令,不接收返回值 cmd.Run() Run(),命令其实是调用了 cmd.Star...

     

    测试代码地址:https://github.com/kirinlabs/execshell

    Golang 执行 shell 脚本,不接收返回值

    // 返回一个 cmd 对象
    cmd := exec.Command("sh", "-c", "./scripts/curl.sh")
    
    // 如果只执行命令,不接收返回值
    cmd.Run()
    

    Run(),命令其实是调用了 cmd.Start()和 cmd.Wait()两个方法,只返回一个 error 对象

     

    Golang 执行 shell脚本,接收返回值

    // 返回一个 cmd 对象
    cmd := exec.Command("sh", "-c", "./scripts/curl.sh")
    
    // 收返回值[]byte, error
    b,er:= cmd.Output()
    
    log.Pringln(string(b))
    

            返回值就是 shell 脚本打印的日志信息,但这样有一个缺点,golang 接收 shell 脚本的打印结果,必须要等待 shell 脚本全部执行完成才能一次性返回

     

    Golang 执行 shell脚本,并实时打印 shell 脚本输出日志信息

    实际业务比如:异步任务调度系统、自动发布系统等都有可能需要 shell 脚本的配合来完成,就需要实时打印 shell 脚本的中每条命令的输出日志信息,便于查看任务进度等

    package main
    
    import (
    	"fmt"
    	"io"
    	"log"
    	"os/exec"
    	"strings"
    )
    
    func asyncLog(reader io.ReadCloser) error {
    	cache := ""
    	buf := make([]byte, 1024, 1024)
    	for {
    		num, err := reader.Read(buf)
    		if err != nil {
    			if err == io.EOF || strings.Contains(err.Error(), "closed") {
    				err = nil
    			}
    			return err
    		}
    		if num > 0 {
    			oByte := buf[:num]
    			h.logInfo = append(h.logInfo, oByte...)
    			oSlice := strings.Split(string(oByte), "\n")
    			line := strings.Join(oSlice[:len(oSlice)-1], "\n")
    			fmt.Printf("%s%s\n", cache, line)
    			cache = oSlice[len(oSlice)-1]
    		}
    	}
    	return nil
    }
    
    func execute() error {
    	cmd := exec.Command("sh", "-c", "./scripts/curl.sh")
    
    	stdout, _ := cmd.StdoutPipe()
    	stderr, _ := cmd.StderrPipe()
    
    	if err := cmd.Start(); err != nil {
    		log.Printf("Error starting command: %s......", err.Error())
    		return err
    	}
    
    	go asyncLog(stdout)
    	go asyncLog(stderr)
    
    	if err := cmd.Wait(); err != nil {
    		log.Printf("Error waiting for command execution: %s......", err.Error())
    		return err
    	}
    
    	return nil
    }
    
    func main(){
    	execute()
    }

    shell脚本,每秒打印时间,观察 Golang 对日志的实时输出

    #!/bin/bash
    
    #print time
    for((i=0;i<10;i++))
    do
        sleep 1
        echo $(date +"%Y-%m-%d %H:%M:%S")
    done

     

    展开全文
  • Linux中执行shell脚本的5种方法总结

    万次阅读 多人点赞 2019-04-01 15:17:54
    Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法: 方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本: 复制代码代码如下: cd /data/shell ./hello.sh ./的意思...

    Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法:

    方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本:

    复制代码 代码如下:

    cd /data/shell
    
    ./hello.sh


    ./的意思是说在当前的工作目录下执行hello.sh。如果不加上./,bash可能会响应找到不到hello.sh的错误信息。因为目前的工作目录 (/data/shell)可能不在执行程序默认的搜索路径之列,也就是说,不在环境变量PASH的内容之中。查看PATH的内容可用 echo $PASH 命令。现在的/data/shell就不在环境变量PASH中的,所以必须加上./才可执行。

     

    方法二:以绝对路径的方式去执行bash shell脚本:

    复制代码 代码如下:

    /data/shell/hello.sh

     

    方法三:直接使用bash 或sh 来执行bash shell脚本:

    复制代码 代码如下:

    cd /data/shell
    
    bash hello.sh


    复制代码 代码如下:

    cd /data/shell
    
    sh hello.sh


    注意,若是以方法三的方式来执行,那么,可以不必事先设定shell的执行权限,甚至都不用写shell文件中的第一行(指定bash路径)。因为方法三 是将hello.sh作为参数传给sh(bash)命令来执行的。这时不是hello.sh自己来执行,而是被人家调用执行,所以不要执行权限。那么不用 指定bash路径自然也好理解了啊,呵呵……。

     

    方法四:在当前的shell环境中执行bash shell脚本:

    复制代码 代码如下:

    cd /data/shell
    
    . hello.sh


    复制代码 代码如下:

    cd /data/shell
    
    source hello.sh


    前三种方法执行shell脚本时都是在当前shell(称为父shell)开启一个子shell环境,此shell脚本就在这个子shell环境中执行。shell脚本执行完后子shell环境随即关闭,然后又回到父shell中。而方法四则是在当前shell中执行的。

    方法五:在shell中启动另外的shell

    在运行shell脚本时候,有三种方式来调用外部的脚本,exec(exec script.sh)、source(source script.sh)、fork(./script.sh) 
    1、exec(exec /home/script.sh): 
    使用exec来调用脚本,被执行的脚本会继承当前shell的环境变量。但事实上exec产生了新的进程,他会把主shell的进程资源占用并替换脚本内容,继承了原主shell的PID号,即原主shell剩下的内容不会执行。

    2、source(source /home/script.sh)

    使用source或者“.”来调用外部脚本,不会产生新的进程,继承当前shell环境变量,而且被调用的脚本运行结束后,它拥有的环境变量和声明变量会被当前shell保留,类似将调用脚本的内容复制过来直接执行。执行完毕后原主shell继续运行。

    3、fork(/home/script.sh)

    直接运行脚本,会以当前shell为父进程,产生新的进程,并且继承主脚本的环境变量和声明变量。执行完毕后,主脚本不会保留其环境变量和声明变量。

    总结:这样来看fork最灵活,source次之,exec最诡异。

     

    查看哪个用户用的什么shell登录:

    1.echo $SHELL          #查看当前登录的用户所用的shell
    2.grep username /etc/passwd 看最後一段    #查看想要知道的用户登录所用的shell

    展开全文
  • 下面说下运行shell脚本的步骤 准备工作: 1 需要Windows 下载git 2 新建一个.sh结尾的文件,或者直接创建一个记事本,结尾不影响脚本执行的,(sh 结尾的文件方便让人知道这是一个shell脚本) 内容如下 #!/bin/bash echo ...
  • android执行shell脚本

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

    万次阅读 2019-03-25 16:44:15
    php作为一门服务器端脚本语言,也是可以调用系统命令的,这其中就包括了执行shell脚本 编写test.sh脚本如下 #! /bin/sh mkdir /www/a 很简单的一个shell脚本 创建一个文件夹 php脚本如下 system('/us...
  • 主要介绍了IDEA中编写并运行shell脚本的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 运行shell脚本报错:“syntax error near unexpected token 的解决方法`” 今天写了个Cshell脚本运行报错syntax error near unexpected token `,脚本语法没有问题,最后发现了问题 用命令vi -b 打开你的SHELL...
  • 主要介绍了实现android自动化测试部署与运行Shell脚本分享,本文直接给出实现代码,需要的朋友可以参考下
  • mac终端下运行shell脚本   1、写好自己的 脚本,比如aa.sh    2、打开终端 执行,方法一: 输入命令 ./aa.sh ,   方法二:直接把 aa.sh 拖入到终端里面。   注意事项:   如果 没有成功报出问题::...
  • crontab运行脚本存在两大问题:环境变量和路径,从而导致单独运行脚本没问题,但用crontab运行就报错。 1、环境变量  描述问题:crontab: usage error: no arguments permitted after this option  因为crontab...
  • 使用Java定时执行shell脚本

    千次阅读 2017-09-14 13:32:09
    执行shell脚本 java定时任务
  • nodejs在Windows下执行shell脚本

    千次阅读 2019-05-03 12:30:08
    Windows自动执行shell脚本
  • python执行shell脚本的几种方法

    万次阅读 2019-11-05 09:27:35
    前言:Python作为一门脚本语言,有时候需要与shell命令交互式使用,在Python中提供了很多的方法可以调用并执行shell脚本,本文做一个简单的总结。本文的开发环境是Ubuntu16.04. 一、os.system(“command”) 这是...
  • Java执行shell脚本文件完整代码

    万次阅读 2018-08-30 20:29:03
    最近要下线一台历史遗留的物理机,在整理该机的crontab任务时,发现有不少纯shell脚本形式的定时任务,决定使用Java写一个执行shell脚本文件的通用工具类。 二、实现方式 Java执行shell脚本文件共有两种方式,两...
  • 新建一个.sh结尾的文件,或者直接创建一个记事本,结尾不影响脚本执行的,(sh 结尾的文件方便让人知道这是一个shell脚本) 内容如下 #!/bin/bash echo "Hello World !" 1 打开终端 2 整脚本所在的文件夹赋值权限 输入: ...
  • Linux运行shell脚本提示No such file or directory错误的解决办法Linux运行shell脚本提示No such file or directory错误的解决办法1....今天执行shell脚本突然报了个 No such file or directory 的...
  • Windows下运行Shell脚本

    千次阅读 2020-02-25 10:33:46
    在Windows操作系统下运行Shell脚本,缺少的只是一个Git软件。其下载路径为Git - Downloading Package。 安装之后,将安装路劲下的bin文件夹的路径添加到系统环境变量。于是我们就能够在CMD中通过 sh xxx.sh 来...
  • Android开机执行shell脚本

    千次阅读 2018-03-23 08:49:09
    往往需要在Android启动过程中去对系统做一些设置,如修改某些文件夹的属主和文件的权限,可在init.rc中增加service执行shell脚本,从而可在shell脚本中完成大部分操作。1、在system/bin/下创建一个shell脚本init.mbx...
  • Jenkins执行shell脚本乱码解决办法

    万次阅读 2014-02-10 15:09:27
    Jenkins里直接执行shell脚本,会出现中文乱码的问题。但是单独执行shell脚本又是没问题。这个怎么办呢? 解决办法: 在shell脚本开始的时候加上命令: export LANG="en_US.UTF-8" 中文乱码的问题就解决了。 此问题是...
  • 使用crontab定时执行shell脚本

    万次阅读 多人点赞 2018-02-08 08:48:04
    那么今天就来简单说下如何使用crontab定时执行shell脚本。步骤一 首先我们先看一下是否安装了crontab。一般情况下linux系统会自带crontab及crond。如果没有安装,请使用以下指令安装:yum install vixie-cron ...
  • Android程序中如何执行shell脚本

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

    千次阅读 2018-07-11 11:28:25
    利用Cmake 来执行shell 脚本project(getlocal_ip) cmake_minimum_required(VERSION 2.6)add_custom_target(config ALL COMMAND bash getlocalip.sh ) 
  • Windows下执行shell脚本

    万次阅读 2019-09-03 18:52:18
    1、在windows下想要执行shell脚本,需要使用到"Git Bash",所以我们需要先安装Git。 2、添加环境变量:C:\Program Files\Git\cmd 3、打开"Git Bash",运行脚本 三种方式运行: (1)./test.sh (2)sh test.sh...

空空如也

空空如也

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

运行shell脚本