• 本文介绍了在Linux下以相对路径和绝对路径运行.sh(Shell脚本)文件的方法。

    本文转载自:百度经验:Linux下如何运行.sh文件









          其中,以绝对路径运行方法:

          (1)./home/test/shell/hello.sh,可以这样运行是因为当前登录用户是root,当前路径是在/下,. 代表当前路径。

          (2)/home/test/shell/hello.sh,此路径为真实绝对路径,但此方式运行的条件是该用户对hello.sh拥有执行权限,即已执行chmod u+x hello.sh。

          (3)sh /home/test/shell/hello.sh,用sh命令执行shell脚本不需要该用户拥有hello.sh的执行权限即可执行。

    展开全文
  • linux shell中, 执行shell script的方式有多种, 有什么区别呢? 实际上我之前说过, 现在用一个简单例子再来说下。  a.sh的内容是: #! /bin/bash echo hello world echo "PID of this script: $$&...

          在linux shell中, 执行shell script的方式有多种, 有什么区别呢?  实际上我之前说过, 现在用一个简单例子再来说下。

          a.sh的内容是:

    #! /bin/bash
    echo hello world
    echo "PID of this script: $$"
    echo "PPID of this script: $PPID"

           看下结果:

    ubuntu@VM-0-15-ubuntu:~$ echo $$
    21657
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ a.sh
    No command 'a.sh' found, did you mean:
     Command 'ash' from package 'ash' (universe)
     Command 'adsh' from package 'apt-dater' (universe)
    a.sh: command not found
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ ./a.sh 
    hello world
    PID of this script: 28875
    PPID of this script: 21657
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ sh ./a.sh 
    hello world
    PID of this script: 28895
    PPID of this script: 21657
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ sh a.sh 
    hello world
    PID of this script: 28908
    PPID of this script: 21657
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ source ./a.sh 
    hello world
    PID of this script: 21657
    PPID of this script: 21656
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ source a.sh   
    hello world
    PID of this script: 21657
    PPID of this script: 21656
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ . ./a.sh
    hello world
    PID of this script: 21657
    PPID of this script: 21656
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ ../a.sh
    -bash: ../a.sh: No such file or directory
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 
    ubuntu@VM-0-15-ubuntu:~$ 

             一步一步地来说:

            当前shell进程的进程号是21657

            用a.sh来执行是万万要不得的, 少了./

            ./a.sh,sh ./a.sh和sh a.sh是一样的, 实际上是启了一个子shell来执行a.sh, 所以可以看到PPID of this script: 21657

            source ./a.sh ,source a.sh 和. ./a.sh是一样的, 都是在当前shell中执行脚本, 请看进程号

            ../a.sh是万万要不得的,两个点之间没有空格

     

           最后要说明的两点是:

          1. 用sh和source去执行时, 不要求a.sh有可执行权限, 但单独./a.sh这样去搞时,需要可执行权限

          2. 大家在开发项目时,经常需要设置环境变量, 当然是用source啊, 确保在当前shell生效

     

     

    展开全文
  • 编写第一个shell脚本在gedit中编写.sh格式的文件,保存为a.sh。 代码: #! /bin/bash # employ bash shell player1=xiaoming # define a player1 player2=ken echo "Game start! $player1 $player2" # echo is ...

    编写第一个shell脚本

    在gedit中编写.sh格式的文件,保存为a.sh。
    这里写图片描述

    代码:
    #! /bin/bash  # employ bash shell
    player1=xiaoming # define a player1
    player2=ken  
    echo "Game start! $player1  $player2" # echo is used to printf in terminal

    在终端调用脚本,定位到目录,然后输入:

    bash a.sh

    这里写图片描述

    看到打印结果如上所示。

    编写第一个if/else脚本

    编写的if/else如下:
    if和 ; 之间的代码

    ls -l a.sh 

    是用来判断当前的目录下是否存在a.sh这个文件。if和else的基本格式如下所示,

    if command ; then
    code1
    else
    code2
    fi

    这里写图片描述

    在终端调用的结果如下,可以看到输出了

    ls return true

    这里写图片描述

    再看一个if/else脚本

    如下脚本,if/else格式和上面格式一致,重点看下 if 和 ;间的那个命令,命令开始以 [,后面有4个参数 $1,=,me,]

    这里写图片描述

    输出的结果如下所示:

    这里写图片描述

    用 = 来判断输入的字符串是否等于me。其他的常用判断参数见下图:

    这里写图片描述

    看一个for循环

    for循环的格式如下脚本所示:

    这里写图片描述

    #! /bin/bash  # employ bash shell
    for num in 1 2 3 4 5 six
    do 
       echo "num=$num"
    
    for(( num=1; num<7; num++)) # method2
    do 
      echo "num=$num"
    done
    

    while循环

    while循环的基本格式如下:

    这里写图片描述

    这里写图片描述

    #! /bin/bash
    
    i=7
    j=10
    while [ $i -lt $j ] 
    do
       echo "num1 = $i, num2=$j"
       ((i++))
    done
    
    展开全文
  • linux启动,重启,停止 jar,.sh脚本 #配置jar名称 APP_NAME=receiver.jar #使用说明,用来提示输入参数 usage() { echo "Usage: sh 脚本名.sh [start|stop|restart|status]" exit 1 } #检查程序是否在运行 is_...

    linux启动,重启,停止 jar,.sh脚本

    #配置jar名称
    APP_NAME=receiver.jar
    
    #使用说明,用来提示输入参数
    usage() {
    echo "Usage: sh 脚本名.sh [start|stop|restart|status]"
    exit 1
    }
    
    #检查程序是否在运行
    is_exist(){
    pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}' `
    #如果不存在返回1,存在返回0
    if [ -z "${pid}" ]; then
    return 1
    else
    return 0
    fi
    }
    
    #启动方法
    start(){
    is_exist
    if [ $? -eq "0" ]; then
    echo "${APP_NAME} is already running. pid=${pid} ."
    else
    nohup java -jar /usr/local/bin/$APP_NAME > /usr/local/bin/log.file 2>&1 &
    echo "${APP_NAME} start success"
    fi
    }
    
    #停止方法
    stop(){
    is_exist
    if [ $? -eq "0" ]; then
    kill -9 $pid
    else
    echo "${APP_NAME} is not running"
    fi
    }
    
    #输出运行状态
    status(){
    is_exist
    if [ $? -eq "0" ]; then
    echo "${APP_NAME} is running. Pid is ${pid}"
    else
    echo "${APP_NAME} is NOT running."
    fi
    }
    
    #重启
    restart(){
    stop
    start
    }
    
    #根据输入参数,选择执行对应方法,不输入则执行使用说明
    case "$1" in
    "start")
    start
    ;;
    "stop")
    stop
    ;;
    "status")
    status
    ;;
    "restart")
    restart
    ;;
    *)
    usage
    ;;
    esac
    
    
    展开全文
  • 编写开机自动执行的脚本auto.sh #!/bin/sh #chkconfig: 2345 20 80 #description:Server reboot.Execute auto.sh #client post port 80 redirect 9527 #sudo iptables -A PREROUTING -t nat -i eth0 -p tcp —...

    编写开机自动执行的脚本auto.sh

    #!/bin/sh
    #chkconfig: 2345 20 80
    #description:Server reboot.Execute auto.sh
    
    #client post port 80 redirect 9527
    #sudo iptables -A PREROUTING -t nat -i eth0 -p tcp —dport 80 -j REDIRECT —to-port 9527
    
    #auto.sh log
    DIR=/home/linux-nice
    echo "execute auto.sh" > $DIR/auto_log.txt
    

    chkconfig命令

    chkconfig命令检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务

    等级0表示:表示关机
    等级1表示:单用户模式
    等级2表示:无网络连接的多用户命令行模式
    等级3表示:有网络连接的多用户命令行模式
    等级4表示:不可用
    等级5表示:带图形界面的多用户模式
    等级6表示:重新启动
    
    #!/bin/sh 告诉linux服务器这是一个.sh脚本
    **2345**对应linux服务器的2345阶段能执行auto.sh脚本
    20表示启动优先级序号 80表示关闭优先级序号(就这个不太懂 有哪位大佬能提供资料吗)
    [root@VM_158_86_centos ~]# cd /etc/rc.d/init.d/ 进入该文件夹
    [root@VM_158_86_centos init.d]# vi auto.sh 编写脚本
    [root@VM_158_86_centos init.d]# vi auto.sh 
    [root@VM_158_86_centos init.d]# chmod +x auto.sh 给脚本添加执行权限
    [root@VM_158_86_centos init.d]# chkconfig --add auto.sh  添加脚本至开机自启
    [root@VM_158_86_centos init.d]# chkconfig auto.sh on 开启
    [root@VM_158_86_centos init.d]# sudo reboot 重启
    

    验证

    请事先创建好/home/linux-nice/auto_log.txt 文件
    然后重启服务器 sudo reboot
    auto_log.txt是否输出了”execute auto.sh”
    这里写图片描述
    结果打印出来了 说明开机自动执行了该脚本

    prefect

    补充:
    有可能linux系统没有/etc/rc.d/init.d/ 文件夹 就在/etc/rc.local

    sh /path/xxx.sh命令
    展开全文
  • linux下执行.sh文件的方法  .sh文件就是文本文件,如果要执行,需要使用chmod a+x xxx.sh来给可执行权限。     是bash脚本么  可以用touch test.sh #创建test.sh文件  vi test.sh #编辑test.sh文件  ...
  • Linux下如何写 .sh 脚本启动 项目 创建文件 mealcoupon.sh 内容如下: #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=xhqy_yzf-1.0.0.war #项目的路径(替换成你项目的路径) PROJECT_...
  •  在Linux环境下,通过“ls、ls-l、ls -a”命令查看当前目录下的内容,通过“cd ”命令进入想新建.sh文件的文件夹后,通过“pwd”命令查看所在目录的地址。  通过如下命令使用nano编辑器创建.sh文件: sudo ...
  • build.sh脚本

    2019-10-12 15:14:27
    1开头 程序必须以下面的行开始...当编写脚本完成时,如果要执行该脚本,还必须使其可执行。 要使编写脚本可执行: 编译chmod +x filename这样才能用./filename来运行 2注释 在进行shell编程时,以#开头的句子表示...
  • 本文介绍Linux下面用命令如何运行.sh文件的方法,有两种方法: 一、直接./加上文件名.sh,如运行hello.sh为./hello.sh【hello.sh必须有x权限】 二、直接sh 加上文件名.sh,如运行hello.shsh hello.sh【hello.sh...
  • linux stop.sh

    2017-07-27 20:42:10
    上次老大出差,让我写了个start.sh脚本,一直用着,但是关闭窗口就停止了。今天改了改,末尾加个&,在后台运行。 最近项目快结束了,又让我写个stop.sh。 我就百度 ...pid=`(ps -ef | grep /home/jiao/8.3.1.4
  • 1.向.sh脚本中传递参数 [root@nhost21 test.save.data]# ./test.sh 1 2 3 执行的文件名:./test.sh 执行的文件名:./test.sh 第一个参数为:1 第二个参数为:2 第三个参数为:3 .sh脚本内容如下所示: #!/...
  • start.sh #!/bin/sh . "$ZOOBINDIR"/env.sh APP_JAR_NAME="${build.finalName}.jar" current_path=`pwd` case "`uname`" in Linux) bin_abs_path=$(readlink -f $(dirname $0)) ;; *) bin_abs_path=`c
  • 在前面一面文章中, 我们深入分析过source命令的用途, 现在, 我们要来说说linux shell中的点命令。 不卖关子了, 直接说吧, linux shell中的点命令完全等同于source命令。 如果需要知道source命令的用途, 请直接...
  • 1:新建一个目录(可以是你当前的项目,如果.sh脚本执行结果和你项目相关的话。如果是系统本身相关的,建议放在其他位置)2:在新建的目录下创建一个test.sh文件内容如下(这里以开启mysql服务为例--&gt;事先关闭:...
  • unrar.sh脚本编写为: ... #!/bin/sh cd /home unrar e -p123456 "/1.rar"...将unrar.sh脚本放入linux系统下 执行chmod 777 unrar.sh使脚本具备执行权利,否则会报错:permission denied 执行sh...
  • windows下执行.sh脚本

    2017-10-17 14:46:01
    现在开发项目遇到一个问题,mac系统和windows下开发,对于mac下的sh脚本,想要在windows下也能正常执行,通过了解,安装cygwin,Cygwin是一个在windows平台上运行的类UNIX模拟环境 基本操作命令: ls #以默认...
  • linux 如何开机自动运行某sh脚本。比如开机自动运行 /test.sh 第二个问题,还有什么办法可以确定test.sh已经正确运行了 要开机 运行只需将它加入到 rc.local ,一般为/etc/rc.d/rc.local 在其中加入以下行:sh ...
1 2 3 4 5 ... 20
收藏数 227,348
精华内容 90,939
关键字:

.sh linux 脚本