精华内容
下载资源
问答
  • ubuntu编写.sh脚本文件

    2020-12-28 11:49:42
    编写.sh脚本文件 1.第一行一般是 #! /bin/bash 2.变量使用 变量定义格式为:变量名=值 a=1 b=2 引用变量时需要加上$符号 数学计算要使用[]括起来并且外面加$ sum=$[$a+$b] 用户交互 read从键盘得到变量值 read-p...

    编写.sh脚本文件

    一、bash方式运行

    1.第一行是 #! /bin/bash

    2.变量使用
    变量定义格式为:变量名=值
        a=1
        b=2
    引用变量时需要加上$符号
    数学计算要使用[]括起来并且外面加$
    sum=$[$a+$b]
    用户交互 read从键盘得到变量值  read-p与echo相似,都是打印输出
    read -p "Please input a number x,y"
    read x
    read y

    $1,$2代表用户输入位置参数,如
    sum=$[$1+$2]
    echo "$sum"

    3.判断语句格式
    if 判断语句一 ; then
    command
    elif 判断语句二; then
    command
    else
    command
    fi

    二、expect方式运行(参考博客1,参考博客2)

    Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件(Expect [is a] software suite for automating interactive tools)。使用它系统管理员的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。借助expect,我们可以将交互过程写在一个脚本上,使之自动化完成。形象的说,ssh登录,ftp登录等都符合交互的定义。

    如果装有tcl,可以sudo apt install expect 安装,whereis expect 查看路径 ,终端输入expect开始启动。简单的命令如下:

      set timeout           #设置超时时间,默认超时时间10s.

      spawn shell command   # spawn后面接的是我们要执行的shell命令

      expect "hi"        #匹配输出内容“hi”

      {send “hello\r”}                    # 匹配到内容''hi"后输出“hello”,“\r”是代表是返回字符。

      interact             #执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行一段命令就退出,可改为[expect eof]。

    举几个例子

    #!/usr/bin/expect -d
      set timeout 30 
      spawn ssh -l username 192.168.1.1 
      expect "password:" 
      send "ispass/r" 
      interact

    1. [#!/usr/bin/expect] 
      这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash是一类东西,-d启动调试模式,可以不加。 
      注意:这一行需要在脚本的第一行。 
      2. [set timeout 30] 
      基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒 
      3. [spawn ssh -l username 192.168.1.1]
      spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。
      它主要的功能是给ssh运行进程加个壳,用来传递交互指令。 
      4. [expect "password:"] 
      这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒
      5. [send "ispass/r"] 
      这里就是执行交互动作,与手工输入密码的动作等效。 
      温馨提示: 命令字符串结尾别忘记加上“/r”,如果出现异常等待的状态可以核查一下。 
      6. [interact] 
      执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行

    #!/usr/bin/expect
    spawn ssh 192.168.123.218   #ssh 远程登陆
    expect {
    "*yes/no" {send "yes\r";exp_continue} #匹配输出内容,返回内容,exp_continue表示继续执行下一步
    "*password" {send "123456\r"}
    }
    interact #执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行一段命令就退出,可改为[expect eof]
    #!/usr/bin/expect 
    set ip [lindex $argv 0]  #这条命令是将变量ip的值设置为传入进来的第一个参数。[lindex $argv 0]表示的就是第一个参数的值
    set port [lindex $argv 1] #这条命令是将变量port的值设置为传入进来的第二个参数。[lindex $argv 1]表示的就是第二个参数的值
    set passwd "123456"
    spawn ssh $ip -p$port  #使用变量,这里使用的方法跟shell脚本一样
    expect {
        "yes/no" {send "yes\r";exp_continue}
        "password:" {send "$passwd\r"}
    }
    interact

    4.一些命令
    date 打印日期
    sleep 3   休眠3秒
    ifconfig  查看ip
    echo      输出信息
    gnome-terminal 打开另一终端
    gnome-terminal --tab 同一窗口打开另一终端
    gnome-terminal --window --window  打开两个新窗口终端
    gnome-terminal --title="new title" 或 gnome-terminal -t "new title"  设置标题
    gnome-terminal -e ls   -e或者-s是启动后自动执行命令,但是执行完终端会自动退出,一种办法是
    gnome-terminal -x bash -c "ls; exec bash"或 gnome-terminal -e 'bash -c "ls; exec bash"'但是-e和-x参数即将废弃,需要使用--代替,即常用的做法是
     gnome-terminal -- bash -c "ls; exec bash"
    sudo pkill Xorg 注销
    sudo shutdown -h now 关机

    set  指令能设置所使用shell的执行方式,可依照不同的需求来做设置

    5.执行脚本
    1.sh test.sh
    2.chmod +x test.sh (可执行权限)
     ./test.sh

    基础知识参考https://www.cnblogs.com/tnxk/archive/2012/08/09/2630195.html

     

    展开全文
  • 主要介绍了linux编写.sh脚本并赋权限问题,文中给大家提到了Linux为sh脚本文件添加执行权限的方法,需要的朋友跟随脚本之家小编一起学习吧
  • linux下编写脚本文件 .sh

    千次阅读 2020-08-25 15:17:42
    编写base.sh脚本文件的过程。 1. touch base.sh //创建一个脚本文件 2.vim base.sh //打开脚本文件 3. 从键盘上输入字母 i 进入vim的插入模式(编辑模式) 4. //后面的的注释,只是为了方便记忆,运行时不能...

    这是一篇学习记录

    一 编写base.sh的脚本文件的过程。

    1. touch base.sh      //创建一个脚本文件

    2. vim base.sh    //打开脚本文件

    3. 从键盘上输入字母 i 进入vim的插入模式(编辑模式)

    4.  //后面的的注释,只是为了方便记忆,运行时不能写。

    #!/bin/bash  //这个是必须要写的
    echo $1      //输出命令行中第一个给定的的参数
    
    //或者也可以这样
    A=$1         //把命令行中第一个给定的参数赋值给变量A
    echo $A      //输出A的值

    5. 按ESC键退出插入模式,再按出 :wq  (前面有个冒号) 退出并保存文件

    6. chmod + x ./bash.sh   //给脚本文件赋予权限(只需要赋予一次)

    7.   ./base.sh    //执行脚本文件

    二  在一个脚本文件中调用能一个脚本文件

    在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢?

    方法一:   . ./subscript.sh     
    方法二:   source ./subscript.sh

    注意:

    1.两个点之间,有空格,千万注意.
    2.两个脚本不在同一目录,要用绝对路径
    3.为简单起见,通常用第一种方法

    具体实现:

    1. 创建两个脚本文件 

    main.sh           #主脚本
    subscripts.sh     #子脚本,或者说被调脚本

    2. ###subscripts.sh 脚本内容如下:### 
    #!/bin/bash 
    string="Hello,World! \n" 

    3.###main.sh 脚本内容如下###
    #!/bin/bash 
    . ./subscripts.sh 
    echo -e ${string} 
    exit 0 

    4运行结果

    >>>: chmod +x ./main.sh    (这里是给所有用户加上一个可执行权限)
    >>>: ./main.sh 
     Hello,World! 
     

    展开全文
  • linux执行sh脚本文件命令 很多时候需要多个命令来完成一项工作,而这个工作又常常是重复的,这个时候我们自然会想到将这些命令写成sh脚本,下次执行下这个脚本一切就都搞定了,下面就是发布代码的一个脚本示例。 ...

    linux执行sh脚本文件命令

    很多时候需要多个命令来完成一项工作,而这个工作又常常是重复的,这个时候我们自然会想到将这些命令写成sh脚本,下次执行下这个脚本一切就都搞定了,下面就是发布代码的一个脚本示例。

    编写脚本

    touch updateapp.sh
    vim updateapp.sh
    #切换目录
    cd /home/ubuntu/mobile
    #更新代码
    git pull origin master
    #重启apache服务
    sudo service apache2 restart

    执行脚本

    管理员身份

    sudo su 
    yourpassword

    执行命令

    ./updateapp.sh

    Note:
    赋予脚本读写执行权限,直接这样是不好的大家不要模仿

    chmod 777 updateapp.sh

    putty的快捷执行

    新建一个putty的快捷方式,然后修改属性,之后哦双击就能免登陆进入系统
    E:\ChromeDown\putty.exe -pw mypassword user_name@123.207.88.150
    213419-20160706221911249-170716372.png

    展开全文
  • Mac下建立.sh脚本文件及其简单应用 一、建立.sh脚本文件 首先我们需要建立一个脚本文件,可以用文本编辑器或者其它工具(如Sublime Text2)建立,注意保存为.sh格式。如,建立一个名为test1的.sh文件:test1.sh。在...

    Mac下建立.sh脚本文件及其简单应用

    一、建立.sh脚本文件

    首先我们需要建立一个脚本文件,可以用文本编辑器或者其它工具(如Sublime Text2)建立,注意保存为.sh格式。如,建立一个名为test1的.sh文件:test1.sh。在文件中我们可以写一段最简单的命令:echo Hello World!!!


    作为实验,我把这个脚本文件放在桌面上。

    二、赋予脚本可执行的权限

    1、进入Mac终端(快捷键:command+Space,输入Terminal 回车);

    2、进入test1.sh文件所在的目录:命令:cd /Users/qyfeng/desktop (注意,cd 后面有一个空格,后面是上面所建立的test1.sh文件所在的目录);

    3、赋予脚本可执行权限,输入命令:chmod +x test1.sh 回车

    三、运行脚本

    经过上述步骤,test1.sh已经成为一个可执行脚本,输入命令:./test1.sh 回车,终端输出“Hello World!!!”


    四、进一步应用

    既然脚本可以承载命令,那么我们可以在脚本中写入更多的命令,比如:启动app,编译、运行java文件,链接服务器等等;只要你能想到的,基本都可以。在此,我仅以一个简单的例子来说明:通过脚本编译运行一个java文件。

    1、建立一个java文件

    public class HuaWeiTest {
    
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    	while(true)
    	{
    		System.out.println("请输入一个字符串:");
    		Scanner input=new Scanner(System.in);
    		String str=input.nextLine();
    		if(str.equalsIgnoreCase("end"))
    			break;
    		else
    			System.out.println("输入字符串为:"+str);
    	}
    	System.out.println("The program is end!!");
    	}	
    }


    2、将test1.sh中的代码修改为如下,并保存:

     
    第一行:为进入java文件所在的目录;第二、三行为编译执行java文件。

    3、打开终端,进入test1.sh所在的目录,执行命令:./test1.sh


    4、本文只是举了一个极为粗略的例子,事实上通过建立脚本与特定的代码文件结合起来可以做出很多有意思的应用,写得比较简单,有时间再补充。



    展开全文
  • Ubuntu系统中sh脚本编写

    万次阅读 2018-10-22 11:20:31
    这个时候我们就可以自己编写一个sh脚本,使用sh脚本操作这些重复的动作。 1.在编写sh脚本前了解一下基本语法 1.1 if语句 #!/bin/sh myPath="/var/log/httpd/" myFile=&...
  • 1、编写 crontabtongweb.sh(并赋予这个文件可执行的权限:chmod 777 crontabtongweb.sh) 代码如下: #/usr/tomcat7/apache-tomcat-7.0.47/bin/shutdown.sh #sleep 1m #/usr/tomcat7/apache-...
  • gnome-terminal设置如下图: 直接原因是,“命令退出时:退出终端”造成的!! 解决方案如下: 1. Ctrl + Alt + F1 ,进入文本操作模式;...2. 登录后,执行:yum install Terminal (注意:Terminal 首字母必须大写...
  • Linux系统sh脚本编写

    千次阅读 2019-06-06 15:43:38
    a,创建脚本文件(test-a.sh) [root@docker_t tools]# touch test-a.sh b,编辑文件 [root@docker_t tools]# vi /home/tools/test-a.sh # ! / bin / sh #设置输出语言 export LANG = en_US . ...
  • Linux的sh脚本编写基础知识

    千次阅读 2014-08-13 22:43:14
    1 开头 程序必须以下面的行开始(必须方在文件的第一...当编写脚本完成时,如果要执行该脚本,还必须使其可执行。 要使编写脚本可执行: 编译 chmod +xfilename 这样才能用./filename 来运行     2 注释
  • linux中sh脚本文件的语法及使用

    万次阅读 2018-03-08 11:25:43
    编写脚本完成时,如果要执行该脚本,还必须使其可执行。要使编写脚本可执行:编译 chmod+x filename 这样才能用./filename 来运行2 注释在进行shell编程时,以#开头的句子表示注释,直到这一行...
  • sh文件编写

    万次阅读 2019-04-24 09:46:55
    1.文件首行 文件第一行: .../bin/sh 符号#!用来告诉系统后面的参数是用来执行该程序的程序 脚本完成之后 chmod +x filename 保证可以使用如下语句执行 ./filename 2.注释 #开头的句子表示注释 3.变量 ...
  • 在windows下使用记事本打开deploy.sh文件编写.sh脚本,保存后拷贝到Linux服务器上,执行后报如下错误。 [root@i-dbb1f0ff shell]# ./deploy.sh -bash:./deploy.sh:/bin/bash^M:bad interpreter:No such file or ...
  • linux编写.sh脚本

    2018-02-04 23:04:14
    保证后台运行,编写.sh启动脚本  #!/bin/sh shell脚本的第一句开头  chmod a+x start.sh 给这个shell脚本一个可执行权限; #!/bin/sh nohup node apps/center_server.js & nohup node apps/system_server....
  • 一、使用脚本 启动:./start.sh start 停止:./start.sh stop...1、创建文件 start.sh 文件放至 jar 同目录 2、添加内容 #!/bin/bash #这里可替换为你自己的执行程序,其他代码无需更改 APP_NAME=txlcn-tm-5.0.2.REL...
  • linux入门-shell(.sh)脚本编写和运行

    万次阅读 多人点赞 2017-07-29 21:54:16
    编写第一个shell脚本在gedit中编写.sh格式的文件,保存为a.sh。 代码: #! /bin/bash # employ bash shell player1=xiaoming # define a player1 player2=ken echo "Game start! $player1 $player2" # echo is ...
  • ubuntu写一个.sh脚本文件

    千次阅读 2018-09-01 11:56:30
    touch hello.sh gedit hello.sh 然后输入 #!/bin/bash echo "Hello world!" chmod +x hello.sh ./hello.sh  
  • 3. bash xx.sh {} {} {}… 其中{}为参数 规则 #! /bin/bash # employ bash shell起始语句 player1=xiaoming # define a player1 player2=ken echo "Game start! $player1 $player2" # echo is use...
  • 第一步编写sh脚本(以autotest.sh为例): 进入到想要放置sh脚本的目录,输入vi autotest.sh进行编写,完成效果如下 当然了,sh脚本sh脚本的格式要求 #!/bin/bash 这个是sh脚本所需要的开头,不写的话运行不...
  • 文件剪切的sh脚本实现

    千次阅读 2016-08-19 21:53:13
    编写shell脚本实现Linux下不同目录(路径)之间的文件的剪切(移动)操作。其中,文件移动之前所在的目录称为源目录,文件移动之后所在的目录称为目的目录。要求当源目录不存在、源目录下无文件及剪切文件成功时,均要在...
  • 当时是sh test.sh ,test.sh中是对几个.py文件的运行命令,运行出结果之后,程序退不出来 百度到的答案基本就是exit或者ctrl+d,但是试过都没用。可能是我百度时的表达有问题吧,最后的解决方案如下:终端输入 ctrl...
  • docker-entrypoint.sh 入口文件编写技巧

    千次阅读 2020-01-09 19:36:12
    在 docker 的官方 Registry 中(store.docker.com)... 而很多 dockerfile 的 ENTRYPOINT 命令都是这么写的["docker-entrypoint.sh"]本篇文章就扫盲下 docker-entrypoint.sh 的特殊用法和设计逻辑 MySQL set -e 你...
  • Python sh脚本

    千次阅读 2018-10-22 09:29:34
    什么是脚本呢,经常听说什么自动化部署,自动化运行,其实都是脚本的作用,这是对脚本比较浅层的理解。 比如: ...sh脚本就可以帮助你了。你创建一个.sh文件,里面编写你需要打开项目需要执行...
  • .sh文件 编写格式

    千次阅读 2014-12-15 11:24:00
    介绍: 1 开头 程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh ...用来告诉系统它后面的参数是用来执行该文件的...当编写脚本完成时,如果要执行该脚本,还必须使其可执行。 要使编写脚本可执行:编...
  • 编写第一个shell脚本文件

    千次阅读 2018-09-21 18:47:51
    在一个空文件夹下新建一个脚本文件test.sh,这里以Mac为例,打开终端,按如下步骤操作 在终端输入: vi test.sh 这样就新建了一个名为test.sh脚本文件,之后按i进入编辑模式,输入以下内容: echo &...
  • vim test.sh 编写一个判断文件类型的脚本 测试
  • Step1:touch arp.sh脚本文件,用vim编辑完成后,更改权限至可执行文件 Step2:编辑源程序 以下为源程序: 注:里边的 ip_head 是博主虚拟机的所在局域网的网络号,读者想要抓取,就要更改其为自己...
  • 一、使用背景 鉴于业务需求,需要编写一个脚本文件,用于不间断的获取一些信息。这里用shell脚本是最方面的,循环执行我们的请求方法即可。二、shell脚本编写过程(1)创建 test.sh文件//使用touch命令创建文件 ...
  • 打开Linux虚拟机,按照要求,建立doc目录,随便拉了些图片文件进去 mkdir doc 然后开始用gedit写shell脚本了。根据要求ifxxx.sh命名 $gedit iflhc.sh 好了,以下就是iflhc.sh的内容了 #!/bin/bash if [ $1 = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 94,397
精华内容 37,758
关键字:

sh脚本文件编写