精华内容
下载资源
问答
  • linux编写一个shell脚本
    2022-05-01 11:34:11

    认识脚本
    脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。——摘自百度百科
    长用的脚本有shell、python…
    学习shell脚本的第一天
    掌握知识有:
    shell脚本的组成(如何编写一个shell脚本)
    shell脚本的执行(两种1.给予执行权限;2.解释器运行,不需要全权限
    shell中的符号
    shell中管道的使用
    shell的输入和输出
    shell中的变量
    shell数组
    shell中的运算(在shell中一般除理的是整型数据,浮点型需要经过处理)
    正文
    shell脚本的组成(如何编写一个shell脚本)
    1.解释环境,shell中的注释使用#来实现,而#!后面跟的路径表示shell的解释环境位置,一般指定为/bin/bash目录所以第一行一般默认#!/bin/bash即可;
    2.注释说明,包括作者、脚本实现功能、编写日期、版本等;
    3.执行代码,即通过编写的脚本语法实现某一功能,这也是编写shell中最核心的部分
    shell脚本的执行(两种1.给予执行权限;2.解释器运行,不需要全权限
    1.shell脚本的执行方式有两种,一种是通过查看权限,当前用户是否有权执行,没有权限执行shell的话通过chmod 777(最简单的方式)来获取全部权限来执行shell,后在shell所做目录下执行./filename.sh即可
    2.第2种执行shell的方式是通过解释器直接运行的方式,来执行shell脚本,一般有bash filename.sh(其他可以根据存放解释器目录下的文件来查看)
    shell中的符号
    ~:家目录
    !:执行历史命令
    $:取变量内容
    + - * / %:数学运算符
    &:后台执行
    *:通配符
    ?:匹配除回车以外的一个字符
    ;:命令分隔符
    |:管道符,该符号的上一条命令的输出做其下一条命令的输入
    \:转义符
    ":反引符,命令中执行命令
    ’ ':单引符,脚本中的字符串需要用引号引起来,单引号不能解释变量
    " ":双引符,与单引号类似,区别在于可以解释其中的变量
    >:一次性输入,保存最后一次输入,原来就又内容的话会被清除
    >>:追加输入
    <:输出
    <<:追加输出
    expr:算术运算
    $?:上一条变量是否执行成功

    更多相关内容
  • 1:查看进程信息 2:查看用户和主机信息 3:显示当前目录信息 4:显示Linux创始人 5:显示Linux分发版本名称和Linux内核版本 6:显示当前的IP地址 7 :退出 8 里面的main.sh文件可直接拉入linux系统里面运行,也有源代码
  • 完全使用Linux shell脚本语言编写一个简单的作业管理系统
  • 本篇文章,我们可以通过写shell脚本来执行数据库操作。 配置文件 创建 test_sql.properties 作为shell脚本的外部配置参数修改: [andya@liunx01 sql_sh]$ vim test_sql.properties # set parameters start # 1 db ...
  • Linux编写Shell脚本

    千次阅读 2021-07-22 17:30:16
    Shell脚本编写规范 Shell 中的变量 变量的算术运算 双小括号 (()) 数值运算命令的用法 let 运算命令的用法 expr 命令的用法 br 命令的用法 $[] 符号的运算示例 Shell脚本的条件测试 几种条件测试语句 文件...

    目录

    Shell

    Shell脚本的执行

    Shell脚本编写规范

    Shell 中的变量

    变量的算术运算

    双小括号 (())  数值运算命令的用法

    let 运算命令的用法

    expr 命令的用法

    br 命令的用法

    $[] 符号的运算示例

    Shell脚本的条件测试

    几种条件测试语句

    文件测试操作符

    字符串测试操作符

    整数二元比较操作符

    逻辑操作符

    测试表达式 test 、[] 、[[]] 、 (()) 的区别

    if 条件判断语句

    case 条件判断语句

    for循环语句

    while循环语句

    Break、Continue、exit 循环控制语句

    Shell脚本执行scrapy爬虫和python脚本

    Shell
    Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等。 用户每输入一条命令,Shell就执行一条。这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式。

    当命令或程序语句不在命令行下执行,而是通过一个程序文件来执行时,该程序文件就被称为Shell脚本。 在Shell脚本里内置了很多命令、语句及循环控制,然后将这些命令一次性执行完毕,这种通过文件执行脚本的方式称为非交互的方式。 Shell脚本语言很适合用于处理纯文本型的数据,而Linux系统中几乎所有的配置文件、日志文件,以及绝大对数的启动文件都是纯文本类型的文件。
    Shell 脚本的类型
    Shell脚本语言是弱类型语言(无须定义变量的类型即可使用),在Unix/Linux中主要有两大类shell: 
    一类是 Bourne  shell ,另一类是 C shell

    Bourne shell 包括 Bourne shell (sh)、Korn shell(ksh)、Bourne Again Shell 三种类型。 
    C shell包括csh、tcsh两种类型
    查看系统默认的shell: echo  $SHELL
    查看系统支持的shell: cat  /etc/shells

     

    Shell脚本的执行
    Shell脚本的执行通常可以采用以下几种方式。

    1、bash script-name 或 sh script-name     这是当脚本文件本身没有执行权限时常使用的方法

    2、path/script-name 或./script-name    在当前路径下执行脚本,需要将脚本文件的权限改为可执行。然后使用脚本的绝对路径或相对路径就可以直接执行脚本了。

    3、source script-name 或 .  script-name 这种方法通常是使用source或 “.”(点号)读入或加载指定的Shell脚本文件,然后依次执行指定的Shell脚本中的语句。这些语句将在当前父 shell 脚本进程中执行(其他几种模式都会启用新的进程执行该脚本进程)。

    Shell脚本编写规范
    Shell脚本的开发规范及习惯非常重要,虽然这些规范不是必须要遵守的,但有了好的规范和习惯,可以大大提升开发效率,并能在后期降低对脚本的维护成本。

    1、一个规范的Shell脚本在第一行会指出由哪个程序(解释器)来执行脚本中的内容,这一行内容在Linux bash的编程一般为:#!/bin/bash  或 #!  /bin/sh     bash 与 sh 的区别 , sh 为 bash的软连接,大多数情况下,脚本使用“#!/bin/bash”和“#!/bin/sh”是没有区别的,但更规范的写法是在脚本的开头使用    #!/bin/bash 

    2、在shell脚本中,跟在 # 后面的内容表示注释,用来对脚本进行注释说明,注释部分不会被当做程序来执行,仅仅是给开发者和使用者看的,系统解释器是看不到的,更不会执行。注释可以自成一行,也可以跟在脚本命令的后面与命令在同一行。 注释尽量不要使用中文,在脚本中最好也不要有中文。

    3、Shell脚本的开头会加版本、版权等信息

    # Date:16:29 2018-10-20 
    # Author: Create by xiaoxie
    # Description: This script function is …… 
    # Version: 1.1 

    4、在shell脚本中尽量不用中文注释,尽量用英文注释,防止本机或切换系统环境后中文乱码的困扰。

    5、Shell脚本的命名应以.sh为扩展名 例如:1.sh

    6、成对的符号应尽量一次性写出来,然后退格在符号内增加内容,以防止遗漏。这些成对的符号包括: {}、[]、‘’、“”  等

    7、中括号[]两端至少要有1个空格,因此,键入中括号时即留出空格[  ],然后在退格键入中间内容,并确保两端都至少由一个空格。

    8、对于流程控制语句,应一次性将格式写完,再添加内容。 如:一次性完成for循环语句的格式

    for
    do
         内容
    done

    9、通过缩进让代码更易读,如:

    if 条件内容     
           then         
                内容 
    fi 
    10、对于常规变量的字符串定义变量值应加双引号,并且等号前后不能有空格,需要强引用的,则用单引号(‘’),如果是命令的引用,则用反引号(``)。

     

    11、脚本中的单引号、双引号及反引号必须为英文状态下的符号。

    Shell 中的变量
    简单地说,变量就是用一个固定的字符串(也可能是字符、数字等的组合)代替更多、更复杂的内容,该内容里可能还会包含变量、路径、字符串等其他内容。 变量是暂时存储数据的地方及数据标记,所存储的数据存在于内存空间中,通过正确地调用内存中变量的名字就可以读取出与变量对应的数据。

    变量的赋值方法为: 先写变量名称,紧接着是 "=" ,最后是值。中间无任何空格。 通过echo命令加上  $变量名,即可输出变量的值。 双引号,以防止出错变量的值一般要加上。

    定义变量时变量名建议用大写,如  A=xie     B=99

    read  -p  “提示信息”   变量名      #交互式赋值方法

    查看变量内容 echo $A  或  echo ${A}

     

    赋值时使用引号的作用

    • 双引号:允许通过$符号引用其他变量值
    • 单引号:禁止引用其他变量值,$视为普通字符
    • 反撇号:命令替换,提取命令执行后的输出结果 全局变量的定义方法 export 变量名

     

    位置参数

    位置参数是一种在调用 Shell 程序的命令行中按照各自的位置决定的变量,是在程序名之后输入的参数。 位置参数之间用空格分隔,Shell取第一个位置参数替换程序文件中的 $1,第二个替换 $2 , 依次类推。$0 是一个特殊变量,它的内容是当前这个shell程序的文件名,所以 $0 不是一个位置参数。

    假如我现在有一个 1.sh脚本文件,内容如下

    #! /bin/bash
    echo $1
    echo $(($2+$3))

    当我执行时,我在文件名后加3个参数

     

    预定义变量

    预定义变量和环境变量相类似,也是在Shell一开始就定义的变量,不同的是,用户只能根据shell的定义来使用这些变量,所有预定义变量都是由符号“$”和另一个符号组成。 常见的Shell预定义变量有以下几种。

    $# :位置参数的数量
    $* :所有位置参数的内容
    $? :命令执行后返回的状态,0表示没有错误,非0表示有错误
    $$ :当前进程的进程号
    $! :后台运行的最后一个进程号
    $0 :当前执行的进程名
    假如我现在有一个 1.sh脚本文件,内容如下

    #! /bin/bash
     
    echo $1
    echo ${2}+${3}
     
    echo $#             #打印出位置参数的数量
    echo $*             #打印出位置参数的内容
    echo $?             #打印出命令执行后返回的状态
    echo $$             #打印出当前进程的进程号
    echo $0             #打印出当前进程的进程名

    当我执行时,我在文件名后加3个参数

     参考文章:Linux中环境变量的设置

    变量的算术运算

    Shell中常见的算术运算符

    Shell 中常见的算术运算命令 

     双小括号 (())  数值运算命令的用法

    双小括号 (()) 的作用是进行数值运算与数值比较,它的效率很高,用法灵活,是Linux下常用的运算操作符。其操作方法如下:

     

     

    let 运算命令的用法

    let运算命令的语法格式为: let 赋值表达式  

    let 赋值表达式的功能等同于“((赋值表达式))” 范例:  给变量 i 加8

    expr 命令的用法

    1、expr 用于运算 
       语法:expr 表达式 
       范例:expr 2 + 2 ; expr 2 – 2 ; expr 2  \*  2 ;  expr 2  /  2    
       注意:运算符号和数字之间要有空格!!

     

     

    2、expr配合变量计算

    expr在Shell中可配合变量进行计算,但需要用反引号将计算表达式括起来。

     3、利用 expr 计算字符串的长度

     

    br 命令的用法

    bc 是UNIX/Linux下的计算器,除了作为计算器来使用,还可以作为命令行计算工具使用

    交互模式 在shell命令行直接输入 bc 及能进入bc语言的交互模式

     

    bc也可以进行非交互式的运算,方法是与 echo 一起使用,所以我们就可以写在脚本里面

    $[] 符号的运算示例 

     

    Shell脚本的条件测试

    通常,在shell的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结果执行不同的操作,有时候也会与 if 等条件语句相结合,来完成测试判断,以减少程序运行错误。

    几种条件测试语句

     文件测试操作符

    注:(())不能用于文件测试,文件测试一般常用的是 []

     字符串测试操作符

    注: == 和 !=  两端要有空格  ,(())不能用于字符测试

     整数二元比较操作符

    "="和"!="也可以在[]中作比较使用,但在[]中使用包含"<"和">"的符号时,需要用反斜线转义,有时不转义虽然语法不会报错,但是结果可能不对。
    也可以在[[]]中使用包含“-gt”和“-lt”的符号,但是不建议使用
    比较符号两端也要有空格,[] (())  [[]]  两端都要有空格

     逻辑操作符

     

    测试表达式 test 、[] 、[[]] 、 (()) 的区别

    if 条件判断语句

    #####单条件判断##############
    if  条件判断
      then 
          命令
    else
          命令
    fi
     
    #或
     
    if  条件判断;then 
         命令
    else
         命令
    fi

     

     

    ###双条件判断#####
    if 条件判断
      then
          命令
    elif 条件判断
      then 
          命令
    else
       命令
    fi
     
    ##或
    if 条件判断;then
        命令
    elif 条件判断;then 
        命令
    else
        命令
    fi

     

    if语句对于字符串的匹配 

     

    case 条件判断语句

    case条件语句相当于多分支的if/elif/ellse条件语句,但是它比这些条件语句看起来更规范更工整,常被应用于实现系统服务启动脚本等企业应用场景中。

    case  变量  in
            one)
                命令
    ;;
            two)
                 命令
    ;;
             *) 
                 命令
    esac

     

     for循环语句

    for  条件
    do
       命令
    done
     
    ##或
     
    for  条件;do
       命令
    done

     

     

    while循环语句

    while  条件
    do
       命令
    done

    Break、Continue、exit 循环控制语句

    break 、continue在条件语句及循环语句(for、while、if等)中用于控制程序走向;而exit则用于终止所有语句并退出当前脚本。

     

     

     

    Shell脚本执行scrapy爬虫和python脚本

    #! /bin/bash
    cd /opt/project/
    scrapy crawl xx
    python3 test.py

    (36条消息) Linux中编写Shell脚本_谢公子的博客-CSDN博客_linux shell脚本编写

    展开全文
  • 主要介绍了linux环境下编写shell脚本实现启动停止tomcat服务的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • Shell(一)简介及编写一个shell脚本 1 Shell简介 ​ Shell是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面...
  • shell脚本的第行,#!之后应该是什么?如果拿这问题去问别人,不同的人的回答可能各不相同。我见过/usr/bin/envbash,也见过/bin/bash,还有/usr/bin/bash,还有/bin/sh,还有/usr/bin/env sh。这算是编程界的...
  • Linux Shell脚本编程

    2012-12-05 10:34:43
    实验任务一:编写一个Shell过程完成如下功能(必须在脚本中使用函数):1、程序接受3个参数:$1、$2和$3,合并两个$1、$2文件为$3,并显示,三个文件均为文本文件。2、如果缺少$3,那么先报告缺少$3,然后将合并后的...
  • Linux shell脚本编写

    千次阅读 2021-09-19 10:58:15
    Linux shell脚本编写 描述 shell脚本是一些linux命令的集合,因为在Linux的shell中运行的,所以称为shell脚本shell脚本linux命令、bash shell命令、程序结构控制语句和注释等内容组成; shell脚本的方便之处...

    Linux shell脚本编写

    描述

    shell脚本是一些linux命令的集合,因为在Linux的shell中运行的,所以称为shell脚本;
    shell脚本由linux命令、bash shell命令、程序结构控制语句和注释等内容组成;
    shell脚本的方便之处在于:可以将所有的操作记录于文件,然后直接一步操作调用完成;

    编写规范

    • 编辑器的使用
      在linux系统中,shell脚本通常使用内置的vim编辑器编写;
      也可以在其他的支持shell语言的编辑器中编写后导入Linux系统;

    • 脚本开头(shebang/hashbang)
      在计算领域中,Shebang(也称为 Hashbang)是一个由井号和叹号构成的字符序列#!,其出现在文本文件的第一行的前两个字符。
      在 Shebang 之后,可以有一个或数个空白字符,后接解释器的绝对路径,用于指明执行这个脚本文件的解释器;

      #! /bin/bash
      do smthing...
      
    • 脚本注释
      在shell脚本中,跟在#号后面的内容表示注释,用来对脚本进行注释说明,注释部分不会被执行;
      注释可自成一行,也可以直接跟在脚本命令后面;
      开发脚本时,尽量养成书写注释的习惯,方便别人也方便自己,有利于团队的协作。

    • 编写示例

      [root@OpenWrtEXT:my_script]#cat core_auto_start.sh
      #!/bin/sh
      
      python -m rpd.tps --port 37 &     # 注释:启动TPS服务
      logfilename=master_log_$(date +%Y%m%d%H%M%S)  # 注释:设置log文件名变量
      python -m rpd.rcp.simulator.rcp_master_sim >logfilename 2>&1 &   # 注释:启动服务,并将log信息写入log文件
      
      [root@OpenWrtEXT:my_script]#
      
    • 脚本运行

      • 通过解释器+脚本方式运行
      [root@OpenWrtEXT:my_script]#cat mytest.sh 
      #!/bin/sh
      echo "this is a test shell!!!!"
      logfile_name=master_log_$(date +%Y%m%d%H%M%S)  # create variable of log filename
      echo $logfile_name
      [root@OpenWrtEXT:my_script]#ll | grep my
      \-rw-r--r--    1 root     root           142 Jul 28 11:00 mytest.sh
      [root@OpenWrtEXT:my_script]#/bin/sh mytest.sh 
      this is a test shell!!!!
      master_log_20210728110110
      [root@OpenWrtEXT:my_script]#
      
      • 给脚本增加执行权限直接运行
      [root@OpenWrtEXT:my_script]#ll | grep my
      \-rw-r--r--    1 root     root           142 Jul 28 11:00 mytest.sh
      [root@OpenWrtEXT:my_script]#./mytest.sh    # 未加执行权限时,无法直接运行
      \-ash: ./mytest.sh: Permission denied
      [root@OpenWrtEXT:my_script]#chmod +x mytest.sh
      [root@OpenWrtEXT:my_script]#ll | grep my
      \-rwxr-xr-x    1 root     root           142 Jul 28 11:00 mytest.sh
      [root@OpenWrtEXT:my_script]#./mytest.sh   # 增加执行权限后,可以直接运行
      this is a test shell!!!!
      master_log_20210728110315
      [root@OpenWrtEXT:my_script]#
      
    展开全文
  • 主要介绍了Linux启动jar包的shell脚本,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • linux bash shell脚本文件.sh,自动输入sudo的密码 在脚本中使用sudo命令,将密码保存在脚本中,不需要手动输入密码
  • 主要介绍了9实战及面试常用Shell脚本编写,非常不错,具有一定的收藏价值,需要的朋友可以参考下
  • shell脚本就是将一个任务的所有命令按照执行的先后顺序,自上而下写入到一个文本文件中,然后给予执行权限。 二:编写脚本 【例:使用shell脚本下载Nginx】 (1)保证虚拟机可以连得上网 (2)在opt文件下创建...

    2020全新shell脚本从入门到精通实战教程_哔哩哔哩_bilibili 自学笔记】

    一:概念简括

    shell脚本就是将一个任务的所有命令按照执行的先后顺序,自上而下写入到一个文本文件中,然后给予执行权限。

    二:编写脚本

    【例:使用shell脚本下载Nginx】

    (1)保证虚拟机可以连得上网

    (2)在opt文件下创建一个新的文件

    mkdir /opt/shell
    cd /opt/shell
    mkdir shell_03

    (3)进入目录

    cd shell_03

    (4)创建一个脚本文件(虽然linux没有后缀名概念,但还是建议.sh结尾

    vim nginx_install.sh

    (5)编写脚本内容

    yum -y install wget gcc  pcre-devel  zlib-devel 
    wget http://nginx.org/download/nginx-1.20.1.tar.gz
    tar xf nginx-1.20.1.tar.gz
    cd nginx-1.20.1
    ./configure --prefix=/usr/local/nginx
    make
    make install

    (6)给予权限 

    chmod 700 nginx_install.sh

    (7)执行脚本

    ./nginx_install.sh

    (8)检查/usr/local目录中查看有没有nginx文件

    cd /usr/local

    ls

    (9)启动nginx

    ./nginx/sbin/nginx 

    (10)打开浏览器访问192.168.10.50
               访问失败,因为防火墙没有设置,要设置防火墙

    firewall-cmd --permanent --add-service=http

    firewall-cmd --reload

    (11)再次访问


    【补充内容】

    1.chmod 777 nginx_install.sh

    chmod命令是 linux 上用于改变权限的命令;

    Linux 系统为每种权限(r、w 和 x)分配了对应的数字:

    权限数字
    r(读)4
    w(写)2
    x(执行)1

    "7"即代表4+2+1,拥有读写执行权限

    2.查看当前所在目录:pwd

    展开全文
  • 编写一个简单的linuxshell脚本

    千次阅读 2021-05-10 00:38:08
    下面是学习啦小编收集整理的编写一个简单的linuxshell脚本,希望对大家有帮助~~编写一个简单的linuxshell脚本工具/原料vimubuntu方法/步骤新建一个文件shell脚本一般用×.sh作为后缀当然勇气他的也可以。打开终端...
  • Shell脚本编写实战

    2021-06-09 11:57:26
    根据实际的案例讲解怎么编写Shell脚本,在什么场景下编写为讲解导向。课程内容如下:1.编写Shell脚本注意事项与编写打印字体颜色函数2.批量创建用户3.监控主机存活状态4.监控CPU、内存、硬盘和网卡流量利用率5.监控...
  • LinuxShell脚本中使用函数实例详解 Shell的函数 Shell程序也支持函数。函数能完成特定的功能,可以重复调用这函数。 函数格式如下: 函数名() { 函数体 }  函数调用方式: 函数名 参数列表  实例:编写...
  • 可以帮助开发人员更快熟悉Linux系统,编写shell脚本
  • 通常,当人们提到“shell脚本语言”时,浮现在他们脑海中是bash,ksh,sh或者其它相类似的linux/unix脚本语言。脚本语言是与计算机交流的另外种途径。使用图形化窗口界面(不管是windows还是linux都无所谓)用户...
  • 在了解了Linux终端和其搭配的基本Shell(默认为bash)的基础下,我们就可以在终端中用vi/vim编辑器编写一个shell脚本程序了Shell既为一种命令解释解释工具,又是一种脚本编程语言,用各种shell下的命令和一些特定的...
  • 主要介绍了Linux通过Shell脚本命令修改密码的两种方式,不需要任何交互,需要的朋友可以参考下
  • 小白一个,望大家多多指教。 平台 腾讯云CentOS 7.6 64bit mac终端(基于bash) 实验目的 如题 实验内容 在终端运行usr_monitor username(username是键盘输入的用户名),先输出当前系统已登陆的用户名单,随后检查...
  • (1)判断/home下是否存在一个的目录文件;如果不存在则转(2)继续往下执行;如果存在则判断该目录下是否存在一个.c文件,如果不存在则转第(3)步,如果存在则从第(4)步继续执行 (2)在/home下创建一个目录;...
  • Linux shell脚本编写基础
  • linuxShell脚本编写实验7报告.pdf
  • Linum Linum是另一个Shell脚本编写Linux枚举脚本。 描述Linum调用Linux内置命令并查询配置文件和日志文件,以收集有关系统的各种信息。 用法最好以root用户访问权限运行此脚本,因为某些信息只能作为root用户收集...
  • 实验目的 理解shell程序的设计方法 ...编写shell脚本,实现功能:对于用户输入的任意数值,计算n! 。 程序代码: #!/bin/bash multiply() { if [ $1 -gt 1 ]; then result=`expr $result \* $1` next=`expr $

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 111,137
精华内容 44,454
关键字:

linux编写一个shell脚本