精华内容
下载资源
问答
  • shell脚本编写
    千次阅读
    2021-09-19 10:58:15

    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]#
      
    更多相关内容
  • Shell脚本编写实战

    2021-06-09 11:57:26
    根据实际的案例讲解怎么编写Shell脚本,在什么场景下编写为讲解导向。课程内容如下:1.编写Shell脚本注意事项与编写打印字体颜色函数2.批量创建用户3.监控主机存活状态4.监控CPU、内存、硬盘和网卡流量利用率5.监控...
  • Shell脚本编写

    千次阅读 2022-04-06 14:34:01
    shell脚本内容 shell解释 shell脚本编写

    shell脚本编写

    • 什么是shell
    shell脚本(shell script)又称Shell命令稿、程序化脚本,是一种计算机程序使用的文本文件,内容由
    一连串的shell命令组成,经过Unix Shell直译其内容后运作(简而言之将一个或者多个命令写文件里执行)
    
    • 交互式和非交互式
    [root@ITTLDOG /date/shell]# echo $?
    0
    [root@ITTLDOG /date/shell]# cat ITDOG.sh 
    #!/bin/bash
    echo $?
    [root@ITTLDOG /date/shell]# sh 1.sh 
    0
    
    • 什么是Shell脚本
    1、Linux系统命令的堆积,按照编写的顺序执行
    2、特定的格式+特定的语法+系统的命令=文件
    3、文件结尾依照.sh为结尾
    
    • Shell脚本能干什么
    1、 基础的配置    系统的初始化  系统更新  内核调整  网络  时区   优化
     
    2、安装软件程序    Nginx   MySQL Redis  Rsync NFS  Docker k8s
     
    3、 配置的变更    Nginx PHP Redis  MySQL  conf 配置文件的变更
     
    4、 业务的部署    Shell配合Git、jenkins实现自动化的部署  代码上线 回滚  
     
    5、 日常备份   	 脚本备份+定时任务   企业的备份   
     
    6、 信息采集 	 Zabbix监控 + Shell取值  对硬件  系统状态 服务  
     
    7、 日志分析      ELK  取值  排序 去重 统计 分析 
     
    8、 服务的扩容或者缩容  
     
    		扩容: 添加集群节点     监控CPU 负载  内存  >80% 触发的动作  脚本  
    		
    		缩容: 减少集群节点     监控CPU 负载  内存  <20%  触发的动作  把某一个节点进行移除		
    
    • Shell脚本的规范以及好习惯
    1、创建一个目录专门用于存放脚本
    [root@ITTLDOG ~]# mkdir -p /date/shell/
    [root@ITTLDOG ~]# 
    [root@ITTLDOG /date/shell]# pwd
    /date/shell
    
    2、强烈建议使用vi或者vim编辑器进行编写脚本
    
    3、脚本最好以.sh结尾(因为好识别,工作的话脚本不建议用1.sh或者a.sh命名,涉及安全大厂会考核)
    
    4、脚本的首行加上幻数,指定好具体的命令解释器进行解释脚本里的命令
    [root@ITTLDOG /date/shell]# cat ITDOG.sh 
    #!/bin/bash #默认为bash执行
    
    5、首行的#! 称之为幻数 /bin/bash 称之为命令解释器
    必须放置在脚本的首行,在其他行都表示注释
    
    6、编写脚本的时候附带作者和版权信息(便于找到谁写的)
    
    7、脚本注释 #号后面的内容都是注释 脚本不要使用中文进行编写 尽量使用英文禁止使用拼音方式编写
    
    8、编写的过程中保持良好的习惯,使用成对的符号的时候 "" {} [] ()尽量一次编写完毕
    
    9、成对的语法个格式,要一次编写完毕 if; then fi  、for i in do done
    
    
    • Shell 脚本的执行方式
    Shell脚本是从上到下、从左到右一次依次执行每一行的命令,执行完一条命令
    之后,再执行下一条命令。如果在脚本中遇到镶嵌的子脚本,执行子脚本之后再
    去执行父脚本未执行的内容。
    
    
    1、bash script-name 或者 sh script-name
    #不需要执行权限,自己生成一个窗口环境执行命令
    
    2source script-name 或者 . script-name
    #不需要执行权限,将脚本中的代码放入到当前环境下执行
    
    3、 path/script-name 或者 ./script-name
    #路径执行 需要执行权限 自己生成一个窗口环境执行命令
    
    4cat script-name | bash
    #不需要执行权限 自己生成一个窗口环境执行命令
    
    5bash < script-name 或者 sh < script-name #不需要执行权限 自己生成一个窗口环境执行命令
    
    
    • 登录式Shell和非登录式shell
    1、登录式和非登录式的区别
    
    登录式Shell:通过用户和密码的方式进行登录进入的Shell
    
    非登录式Shell:不需要用户和密码的方式进入的Shell bash
    
    执行exit命令时,可以退出的是登录式Shell 不能退出的是非登录式shell
    
    执行logout命令时, 只能退出登录式Shell,不能退出非登录式Shell
    
    脚本就是一个非登录式Shell
    
    非登录式Shell不会执行/etc/profile这个文件
    
    2、Shell执行过程中的配置文件
    
    /etc/profile  
     
    /etc/profile.d/*sh
     
    /root/.bash_profile
     
    /etc/bashrc
     
    /root/.bashrc
    
    3、登录式shell的配置文件执行顺序
    
    /etc/profile
    /etc/profile.d/*sh
    .bash_profile
    .bashrc
    /etc/bashrc
    
    4、非登录式Shell的配置文件的执行顺序
    
    .bashrc
    /etc/bashrc
    /etc/profile.d/*sh
    
    展开全文
  • shell脚本编写

    2016-05-21 11:06:59
    shell变量 变量是为灵活管理Linux系统及应用程序提供特定参数,由变量名和变量值构成 Linux系统中shell变量有4种类型:用户自定义变量,由用户自己定义、修改和使用;环境变量,由系统维护,用于设置用户的shell...
  • Linux shell脚本编写基础
  • linuxShell脚本编写实验7报告.pdf
  • shell 脚本编写使用

    千次阅读 2021-07-30 12:58:24
    一、什么是shell 脚本: 二、shell 脚本写法: 三、shell 脚本语法: 1、第一个 shell 脚本: 2、交互式 shell 脚本: 3、shell 脚本的数值计算: 4、test 命令: 5、中括号判断符: 6、默认变量: 7、shell 脚本...

    一、什么是shell 脚本

    终端中输入一系列命令完成一些操作,但是我们一条一条输入命令,这样就会很麻烦,shell脚本可以将很多条命令放到一个文件里面,然后直接运行。

    shell 脚本类似 windows 的批处理文件,shell 脚本就是将连续执行的命令写成一个文件。

    shell 脚本提供数组、循环、条件判断等功能。shell 脚本一般是 Linux 运维、测试、系统管理员需要掌握的

    二、shell 脚本写法

    shell 脚本是个纯文本文件,命令从上而下,一行一行地开始执行。
    shell 脚本拓展名为.sh。shell 脚本第一行一定要为

    #!/bin/bash
    

    三、shell 脚本语法

    1、第一个 shell 脚本

    我们在终端输入:
    在这里插入图片描述
    使用 shell 脚本:

    #!/bin/bash
    echo hello world!
    

    给shell脚本可运行权限:

    chmod 777 first.sh
    或者
    chmod +x first.sh
    

    在这里插入图片描述

    2、read命令

    脚本:

    #!/bin/bash
    echo "please input name and your age:"
    read name age						    	#读取键盘输入字符串,赋值给变量 name 和 age
    echo "your name:" $name ",your age: $age"	# shell 脚本输出变量:$变量名
    

    执行结果:
    在这里插入图片描述
    脚本(-p提示符):

    #!/bin/bash
    read -p "please input your name and your age" name age	#-p 后面跟提示信息,即在输入前打印提示信息
    echo "your name: $name,your age $age"
    

    执行结果:
    在这里插入图片描述

    3、数值计算

    shell 仅支持整型,数值计算使用$((表达式)),示例:

    #!/bin/bash
    read -p "please input operand and number: " operand number
    echo "$operand + $number = $(($operand+$number))"
    echo "$operand - $number = $(($operand - $number))"
    echo "$operand * $number = $(($operand * $number))"
    divided=$(($operand/$number))		#赋值等号间不能有空格!
    echo "$operand / $number = $divided"
    

    执行结果:
    在这里插入图片描述

    4、test命令

    test命令用于查看文件是否存在、权限等信息,可以进行数值、字符和文件三方面的测试。

    cmd1 && cmd2
    #当 cmd1 执行完毕且正确,那么 cmd2 执行,当 cmd1 执行完毕且错误,那么 cmd2 不执行
    
    cmd1 || cmd2
    #当 cmd1 执行完毕且正确,那么 cmd2 不执行,当 cmd1 执行完毕且错误,那么 cmd2 执行
    

    字符串相等测试:

    #!/bin/bash
    read -p "please input first string: " firstStr
    read -p "please input second string: " secondStr
    test $firstStr = $secondStr && echo "The two strings are the same" || echo "The two strings are not the same"
    # test str1 = str2 :两个字符串相等则为真
    

    执行结果:
    在这里插入图片描述
    文件存在测试

    #!/bin/bash
    read -p "please input file name: " filename
    test -e $filename && echo "$filename exist" || echo "$filename non-existence"
    # test -e :如果文件存在则为真
    

    执行结果:
    在这里插入图片描述

    5、中括号判断符

    字符串判断:

    #!/bin/bash
    read -p "please input first string: " firstStr
    read -p "please input second string: " secondStr
    [ "$firstStr" == "$secondStr" ] && echo "The two strings are the same" || echo "The two strings are not the same"
    # 中括号两端内测要加空格,内容建议加 "",否则有空格时会出现参数过多
    [ "$firstStr" != "$secondStr" ] && echo "The two strings are not the same" || echo "The two strings are the same"
    [ "$firstStr" = "$secondStr" ] && echo "The two strings are the same" || echo "The two strings are not the same"
    echo firstStr:  $firstStr
    echo secondStr: $secondStr
    

    执行结果:
    在这里插入图片描述

    6、默认变量

    $0 ~ $n,表示 shell 脚本的执行参数,包括 shell 脚本执行命令本身,shell 脚本执行命令本身为$0。

    $#表示最后一个参数的标号。

    $@表示除$0外的所有参数。

    很像main函数的argc、argv两个参数。

    示例:

    #!/bin/bash
    echo "The zero parameter  :"$0
    echo "The first parameter :"$1
    echo "The second parameter:"$2
    echo "The label of the last parameter:"$#
    echo "All parameters      :"$@
    

    执行结果:
    在这里插入图片描述

    7、条件判断

    shell 脚本支持条件判断,虽然可以通过&&和||来实现简单的条件判断,但是稍微复杂一点的场景就不适合了。shell 脚本提供了if then条件判断语句:

    if 条件判断;then
    	# 判断成立后要执行的语句
    fi				# 结束语句
    
    --------------------------------------------------------------------
    
    if 条件判断; then
    	# 条件判断后成立要执行的语句
    else
    	# 条件判断后不成立要执行的语句
    fi
    
    --------------------------------------------------------------------
    
    if 条件判断; then
    	# 条件判断后成立要执行的语句
    elif 条件判断;then		# 此语句可多次添加
    	# 条件判断后成立要执行的语句
    else
    	# 条件判断后不成立要执行的语句
    fi
    
    --------------------------------------------------------------------
    
    case $变量 in		# 与 C语言 switch case 相似
    "第一个变量内容")
    	# 程序段
    	;;		# 表示第一个程序块结束
    "第二个变量内容")
    	# 程序段
    	;;		# 表示第二个程序块结束
    "第n个变量内容")
    	# 程序段
    	;;		# 表示第 n个程序块结束
    *)			# 类似 C语言 switch case的 default
    	# 程序段
    	;;
    esac
    

    例一:

    #!/bin/bash
    
    read -p "please input(Y/N):" value
    
    if [ "$value" == "Y"  ] || [  "$value" == "y" ]; then
            echo "your input is Y"
            exit 0
    fi
    
    if [ "$value" == "N"  ] || [  "$value" == "n" ]; then
            echo "your input is N"
            exit 0
    fi
    

    结果:
    在这里插入图片描述


    例二:

    #!/bin/bash
    
    case $1 in
            "a")
               echo "param is :a"
               ;;
             "b")
               echo "param is :b"
               ;;
             *)#这里通配符不能加上引号 加上就代表字符*了
               echo "can't identify"
               ;;
    esac
    

    结果:
    在这里插入图片描述

    8、函数

    function fname(){		# function 可写可不写
    	# 函数代码段
    }
    
    fname		# 函数调用
    
    fname param1 param2		# 函数传参
    

    函数传参用法示例:

    #!/bin/bash
    fun1(){
        echo "$0"
        echo "param1:$1"
        echo "param2:$2"
        echo "$#"
        echo "$@"
    }
    
    fun1 lcx1 lcx2 #函数调用和传参
    

    执行结果:

    在这里插入图片描述
    可以看出,$n $# $@表示函数相应传参值,$0仍然表示 shell 脚本第0个参数。

    9、循环

    while 条件			# 条件状态为判断式,条件成立时循环,直到条件不成立
    do					# 循环开始
    	# 循环代码段
    done
    
    --------------------------------------------------------------------
    
    until 条件			# 条件状态为判断式,条件不成立时循环,直到条件成立
    do					# 循环开始
    	# 循环代码段
    done
    
    --------------------------------------------------------------------
    
    for var in con1 con2 con3 ......
    do
    	# 循环代码段
    done
    # 变量 var 循环变化,第一次循环等于 con1,第二次循环等于 con2,以此类推
    
    --------------------------------------------------------------------
    
    for((初始值;限制值;执行步长))
    do
    	# 循环代码段
    done
    # 用法类似于 C语言 for循环
    

    while 循环示例:

    在这里插入图片描述
    在这里插入图片描述

    for 循环示例1:

    #!/bin/bash
    for name in lcx1 lcx2 lcx3
    do
        echo "name = $name"
    done
    

    执行结果(for 循环了三次):
    在这里插入图片描述

    for 循环示例2:

    #!/bin/bash
    for((count=0;count<=10;count++))
    do
        echo "$count"
    done
    

    执行结果:
    在这里插入图片描述

    展开全文
  • 主要介绍了9个实战及面试常用Shell脚本编写,非常不错,具有一定的收藏价值,需要的朋友可以参考下
  • 动机Shell 脚本编写可能相当脆弱:一切都是字符串,脚本编写者有责任使用最佳实践。 使用像 Python 或 Haskell 这样的通用语言更健壮,但它要求目标具有特定的解释器或用于编译的可执行文件的正确处理器架构。 ...
  • 主要介绍了关于如何编写Shell脚本的相关资料,文中介绍的非常详细,对大家具有一定的参考价值,需要的朋友下面跟着小编来一起学习学习吧。
  • 主要介绍了shell脚本编写ping包及arp的监控并发送短信功能,需要的朋友可以参考下
  • 本篇文章,我们可以通过写shell脚本来执行数据库操作。 配置文件 创建 test_sql.properties 作为shell脚本的外部配置参数修改: [andya@liunx01 sql_sh]$ vim test_sql.properties # set parameters start # 1 db ...
  • 警告wfa是sti WFA-用shell脚本编写的简单AUR助手wfa是用Bash编写的AUR助手,正在开发以替代yaourt。 警告wfa仍处于起步阶段。 大多数功能尚未实现,并且不稳定。 安装从Shell脚本中编写的AUR功能安装wfa-git。 专为...
  • 主要介绍了linux环境下编写shell脚本实现启动停止tomcat服务的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • shell脚本编写计算器

    千次阅读 2018-11-16 14:24:08
    版权声明:本文为博主原创文章,转载请注明CSDN...shell脚本编写计算器: 直接上代码: #!/bin/bash falg="1" while [ "$falg" -eq "1" ] do echo "---shell迷你计算器---...

    版权声明:本文为博主原创文章,转载请注明CSDN博客源地址!共同学习,一起进步~ 

    https://blog.csdn.net/qq_29473881/article/details/84138513

    shell脚本编写计算器:

    直接上代码:

    #!/bin/bash
    
    falg="1"
    while [ "$falg" -eq "1" ]
    do
    echo "---shell迷你计算器---"
    echo "请选择对应的运算数字:"
    echo "1:表示加法"
    echo "2:表示减法"
    echo "3:表示乘法"
    echo "4:表示除法"
    echo "5:退出计算器!"
    read check
    echo "值: $check"
    if [ "$check" -eq "1" ]
    then
    	echo "请输入第一个数:"
    	read a
    	echo "请输入第二个数:"
    	read b
    	result=`expr $a + $b`
    	echo "结果为:$result"
    elif [ "$check" -eq "2" ]
    then
    	echo "请输入第一个数:"
    	read a
    	echo "请输入第二个数:"
    	read b
    	result=`expr $a - $b`
    	echo "结果为:$result"
    elif [ "$check" -eq "3" ]
    then
    	echo "请输入第一个数:"
    	read a
    	echo "请输入第二个数:"
    	read b
    	result=`expr $a \* $b`
    	echo "结果为:$result"
    elif [ "$check" -eq "4" ]
    then
    	echo "请输入第一个数:"
    	read a
    	echo "请输入第二个数:"
    	read b
    	result=`expr $a / $b`
    	echo "结果为:$result"
    else
    	falg="0"
    fi
    done

    简单解释下思路:先定义变量flag,用来充当while循环的条件,当选择5的时候,flag="0",此时退出计算器。否则,一直循环,计算器重复使用不退出。测试结果如下:

    如果编写过程中提示有语法错误,可查看上篇文章 shell脚本的问题总结:shell 脚本读取文件内容并输出--问题总结(编码问题)

    展开全文
  • Linux shell 脚本编写

    万次阅读 多人点赞 2018-01-30 12:24:10
    博主这边主要是在Android系统编译打包时要用到这个shell脚本文件,基本上都是用的这个shell脚本,去操作系统文件导入,压缩,copy,move,makedir,权限修改等,所以我们很有必要去了解这个shell程序的编写 ...
  • 资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...
  • shell脚本编写流程!!!

    千次阅读 2018-11-17 12:52:10
    ubuntu终端:ctrl +art + T  cd /home/thomas 到thomas目录下 一、vi bigdata.sh 打开vim编辑器 二、i 输入内容 #!/bin/bash echo Hadoop Hive Hbase spark Esc shift + : ...chomd +x ./digd...
  • Linux Shell 脚本编写的有关于交互式设置亮度的脚本
  • LinuxShell脚本编写PPT课件.pptx
  • LinuxShell脚本编写PPT学习教案.pptx
  • shpkg:用shell脚本编写的包管理器
  • android-am-commands:Android Shell命令进行Shell脚本编写
  • 书籍内容浅显易懂,一个没有任何shell基础的人也能快速学习,不管作为学习书籍或者查询手册都非常不错。
  • 主要为大家详细介绍了shell脚本打印国际象棋棋盘,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Linux Shell脚本编写基础

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 169,802
精华内容 67,920
关键字:

shell脚本编写

友情链接: elevator.zip