首页 > 系统相关 >Linux系统Shell脚本第一章:Shell脚本基础 + 时间同步

Linux系统Shell脚本第一章:Shell脚本基础 + 时间同步

时间:2023-02-05 09:34:21浏览次数:32  
标签:脚本 shell 变量 命令 Shell Linux 执行

一、Shell脚本基础

1. 什么是shell脚本?及构成

  • 就是将命令按顺序一一列出,最后自动执行

  • 执行需要权限,也可以直接使用绝对路径

  • 脚本其实不复杂,通用脚本环境改变后依然可以使用的脚本

构成:

  • 脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器还有其他类型的解释器,#!/bin/python #!/bin/expect
  • 注释信息:以#开头的语句表示为注释信息
  • 可执行语句:比如echo命令用于输出“ ”之间的字符串

2. shell脚本用途

  • 将简单的命令组合完成复杂的工作,自动化执行命令,提高工作效率

  • 减少手工命令的重复输入,一定程度上避免人为错误

  • 将软件或应用的安装及配置实现标准化

  • 用于实现日常性的,重复性的运维工作,如:文件打包压缩备份,监控系统运行状态并实现告警等

3. 脚本执行逻辑及执行方式

脚本执行逻辑:

  • 顺序执行:程序按从上到下顺序执行

  • 选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行

  • 循环执行:程序执行过程中需要重复执行多次某段语句

执行方式:

 

4. 脚本错误调试

  • 命令错误

    命令出错不会影响接下来的命令继续

    hostname
    echo 'finsh'
  • 语法错误

    会影响接下来的命令继续

    echo "hello world"
    hstname
    ​
    cat > /data/kgc.tx <<EOF
    123
    123
    EOF 
    echo "ni hao"
  • 逻辑错误

    只能自己去筛查

总结:脚本错误常见的有三种区别

  • 语法错误,会导致后续的命令不继续执行,可以用bash -n 检查错误,提示的出错行数不一定是准确的

  • 命令错误,默认后续的命令还会继续执行,用bash -n 无法检查出来 ,可以使用 bash -x 进行观察

  • 逻辑错误:只能使用 bash -x 进行

 

5. 实操演示

 

二、 Shell脚本中的变量

1. 变量的作用

Shell 变量用来存放系统和用户需要使用的特定参数(值),而且这些参数可以根据用户的设定或系统环境的变化而相应变化。通过使用变量,Shell 程序能够提供更加灵活的功能,适应性更强。

2. 常见Shell变量类型

自定义变量:由用户自己定义,修改和使用
环境变量:由系统维护,用于设置工作环境,使用env命令可以查看所有环境变量
只读变量:只可以读取不可以更改 ,相当于常量,用处较少
位置变量:通过命令行给脚本传递参数
预定义变量:Bash中内置的一类变量,不能修改    有些规定好的变量 放在那里让你使用
系统内置变量:PATH,UID,HOSTNAME,USER 

3. 变量名要求

  • 定义变量格式:变量名=变量值(shell中不用声明类型,所有类型均为字符串)
  • 定义变量时,变量名要求:变量名区分大小写建议全部使用大写,不能使用系统内置变量。如$PATH是系统外部命令的存放路径等。
  • 变量名不能以数字开头,且不支持短横线 -。

4. 主要指执行脚本时后面所跟着位置

$1-$9:脚本后1-9的位置

${10}:脚本后10以上的位置需要借助变量分隔符{},不然会将$1认为是一个位置变量然后输出再加上后面的数字。

⑤预定义变量:系统已经定义好的变量,只需要记住即可

$*:表示所有位置参数的内容看成一个整体返回

$@:表示输出脚本后的所有位置参数,且认为每个是独立的值

$0:表示当前执行的脚本或程序的名称 当前脚本的名字

$#:表示命令行中位置参数的总个数

$?:表示前一条命令执行后的返回状态,返回值为 0 表示上一条命令执行正确,返回任何非 0值均表示执行出现异常。使用方法echo  $?

$!:后台任务最后一个id,使用方法echo  $!

5. 变量作用范围

默认情况下,新定义的变量只在当前的shell环境中有效,因此称为局部变量,当进入子程序或新的shell环境中,局部变量将无法再起作用。

可以通过内部命令export将指定的变量为全局变量,使用户定义的变量在所子shell环境中可以继续使用

方法:

  1. 格式1:export 变量名

  2. 格式2:export 变量名=变量值

可以使用pstree 查看shell的环境

输入bash进入子shell

ctrl+D组合exit 退出子shell

 

三、时间同步
1. 手动同步
    date命令用来查看系统时间 

    date  -s  " 年-月-日   时:分:秒 " 手动修改系统时间

    ntpdate +服务器地址或域名     立即和此服务器同步时间

  例如:  ntpdate  ntp.aliyun.com  立即和阿里云时间服务器同步时间

2、搭建时间同步服务器

原理:

借助chrony时间同步软件,将有外网的服务器A作为时间服务器与外网服务器同步时间,如阿里云时间服务器(ntp.aliyun.com),然后其他没有外网的服务器B、C等与时间服务器A同步时间

搭建过程:

 

标签:脚本,shell,变量,命令,Shell,Linux,执行
From: https://www.cnblogs.com/daiwei-123/p/17092859.html

相关文章

  • linux引导过程与服务控制
    linux引导过程与服务控制一、引导过程总览开机自检(BIOS)---->MBR引导---->GRUB菜单---->加载内核---->init进程初始化1.开机自检服务器主机开机以后,将根据主......
  • shell脚本——文本处理工具
      文本处理工具--grep、sed、awkBashShell提供了功能强大的文件处理工具:sed(流编辑器streameditor)和awk,都可使用正则表达式进行模式匹配。而grep又有......
  • shell脚本——函数与数组
     Shell脚本之函数及数组一、函数函数的作用语句块定义成函数约等于别名,定义函数,再引用函数封装的可重复利用的具体特定功能的代码函数的基本格式法一......
  • shell脚本——变量与条件语句
     文章目录 Shell:一般我们是用图形界面和命令去控制计算机,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),由于安全、复杂、繁琐......
  • shell脚本——正则表达式
     LinuxShell脚本之正则表达式一、常见的管道命令sort命令sort命令可针对文本文件的内容,以行为单位来排序格式:sort [选项] 参数常用选项选项  ......
  • Linux操作系统引导过程及故障修复
    1、引导过程总览1.开机自检服务器主机开机以后,将根据主板BIOS中的设置对CPU(CentralProcessingUnit,中央处理器)、内存、显卡、键盘等设备进行初步检测,检测成功后根据预......
  • linux磁盘阵列
    1、磁盘阵列简介RAID(RedundantArrayofIndependentDisks)即独立硬盘冗余阵列,简称磁盘阵列。磁盘阵列是由很多价格较便宜的磁盘,以硬件(RAID卡)或软件(MDADM)形式组合成一个......
  • Linux服务器硬件及RAID配置
    Linux服务器硬件及RAID配置一、RAID磁盘阵列介绍独立冗余磁盘阵列(RedundantArrayofIndependentDisks)作用:把多块独立的物理硬盘按不同的方式组合起来形成一个硬盘组......
  • Go Linux bash环境下 字符串strings.Trim截取无效
    result:="40%"iflen(result)>0{fmt.Println("result:",result)numStr:=strings.TrimSpace(strings.Trim(result,"%"))fmt......
  • Linux环境下:程序的链接, 装载和库[静态链接]
    看以下例子main.cexternintx;intmain(){inty=100;swap(&x,&y);return0;}intx=1;voidswap(int*x,int*y){inttemp=*x;......