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]#
    
Logo

更多推荐