首页 > 系统相关 >初始shell脚本

初始shell脚本

时间:2023-11-20 19:22:17浏览次数:35  
标签:脚本 shell 变量 echo 初始 变量名 bash

初始shell

shell脚本大致分为四种类型

记叙型:像写作文一样,一件事一件事的写

判断型:会根据内容选项进行选择

循环型:

混合型:集结了上述的三种类型

 

面向对象:开发在开发的时候将任务当成一个整体

面向过程:开发的时候需要一步一步执行

shell是一个命令解释器,在操作系统的最外层,负责将人类使用的高级语言翻译成二进制,也可以将二进制翻译成高级语言

将人类写的命令集合,用bash(shell)去翻译给硬件执行

shell脚本应用场景

重复性操作

批量事务处理

定时任务执行

shell脚本的构成

1 #!/bin/bash
2 #声明解释器     代表我接下来,使用什么解释器来解释,接下来的命令
3 #  “#”    表示注释信息
4 
5 cd /opt
6 mkdir test
7 #可执行的命令
8 
9 #以.sh  结尾的文件  命令会高亮

执行脚本的三种方式

直接调用shell 解释器 加上脚本的名字 bash 脚本名不需要加上权限

路径/脚本 路径:绝对/相对 但是这个需要权限

source(.)加脚本名 (不建议使用)不需要权限

会直接修改当前bash的环境

 

命令为什么可以补全?

因为 bash在补全的时候,bash会自动去 “echo $PATH”下查找,找到了会自动补全

如果想让脚本全局运行(补全),将脚本放入$PATH路径下

脚本错误

1、命令错误 不会影响接下来的命令执行 但本条命令不执行

bash -x 脚本 bash -x会自运行一遍检查错误

2、语法错误 直接影响脚本,无法正常运行

bash -n 脚本 检查语法错误

3、逻辑错误 不会影响命令的执行,只是得到的结果不同

set -e 脚本错误会时会自动停止

set -u 变量不存在不让执行

重定向操作

重定向:改变电脑数据的输出方向 默认输出的方向是屏幕

电脑给你的回复一定会在屏幕上 我们称为:标准输出

如果电脑没有正确回复 我们称为:错误输出

我们通过键盘鼠标扫描仪话筒等设备输入给电脑的指令 我们称为:标准输入

类型 操作符 解释
重定向输入 < 从指定的文件读取数据,而不是从键盘输入
重定向输出 > 将输出结果保存到指定的文件(覆盖原有内容)
>> 将输出结果追加到指定的文件尾部
标准错误输出 2> 将错误信息保存到指定的文件(覆盖原有内容)
2>> 将错误信息追加到指定的文件中
混合输出 &> 将标准输出、错误输出的内容保存到同一个文件中

shell的变量

作用:用来存放系统和用户需要使用的特定参数

变量名:使用固定的名称,由系统预设或用户定义

变量值:能够根据用户设置、系统环境的变化而变化

变量:值可以变化的

常量:值不可以变化

变量的类型:

自定义变量:由用户自定义、修改和使用

特殊变量:环境变量(env 可以看到所有的环境变量)

只读变量(只可以读,不可以该)

位置变量($1 $2....$n)

预定义变量($? $$ $* $@)

 

shell 不分 数据类型 将所有的数类型都看作字符串

变量名=变量值 (两边都没有空格)

调用变量:echo $变量名

输出变量名:unset 变量名

重新定义变量:变量名=变量值

追加变量值:变量名+=变量值

 变量名命名的要求:

  • 区分大小写
  • 只能使用数字、字母及下划线,且不能以数字开头
  • 大驼峰:StudentFirstName
  • 小驼峰:studentFirstName
  • 下划线:student_name

特殊符号:

${ } 定义了变量名的范围 

$[ ]一定不会出错

" " 变量在双引号中可以识别 (弱引用)

' ' 变量在单引号中不被识别 (强引用)

`` 反撇号 代表引用命令执行的结果 效果等于 $()

整数的运算

expr只能进行整数的运算

格式:expr 变量1 运算符 变量2 [运算符 变量3]

运算符:

加法:+

减法:-

乘法:\*

除法:/

取余:%

实例:

 #配置一个简单的计算机,这个计算机只能计算整数

 #运行这个脚本,根据提示输入(不能计算小数)

 #计算小数会报错

 #将脚本中的运算符改成%可以计算取余

 补充:抽数器

 #会从1到30中随机抽取一个数字

预定义变量:

系统帮你定义好了,拿来就可以使用

$?:代表上一次命令执行结果是否正确 0 代表正确 非0 代表非正确

$0:代表脚本的文件名字 (只表示当前)

$$:表示当前bash的pid

$#:代表位置参数的总个数

$*:代表返回所有参数 (将所有的参数当成一个整体返回)

$@:代表返回所有参数 (所有的参数都是一个独立的个体)

 #编辑一个js.sh的脚本 

 #执行js.sh 范围在{a..z}

试着写脚本:

脚本一:一键搭建yum仓库

 1 #!/bin/bash
 2 mount /dev/sr0  /mnt
 3 cd /etc/yum.repos.d
 4 mkdir  bak
 5 mv *.repo  bak
 6 
 7 echo "
 8 [local]
 9 name=loacl
10 baseurl=file:///mnt
11 gpgcheck=0
12 " > local.repo
13 yum clean all   &>/dev/null
14 yum makecache   &>/dev/null
15 
16 yum install tree -y  &>/dev/null
17 set -e

 #写脚本时一定要注意格式,语法,千万不能出错

 #运行后会自动安装tree服务

 脚本二:快速查看电脑配置(简单版)

 1 #!/bin/bash
 2 ip=`ifconfig ens33|grep netmask|tr -s " "|cut -d " " -f3`
 3 cpu=`lscpu |grep 型号名称|cut -d":" -f2|tr -s " "`
 4 mem=`free -h|grep Mem|tr -s " "|cut -d " " -f2`
 5 disk=`lsblk|grep disk|tr -s " "|cut -d " " -f4`
 6 
 7 
 8 
 9 echo "-----------------systeminfo--------------------"
10 echo  "你的ip地址是:${ip}"
11 echo  "你的主机名是:$(hostname)"
12 echo  "你的系统版本是:$(cat /etc/redhat-release)"
13 echo  "你的CPU型号是:$cpu "
14 echo  "你的内存大小是:$mem "
15 echo  "你的磁盘大小是:$disk "

 

脚本三:快速给硬盘分区

 为服务器添加硬盘

1 #!/bin/bash
2 read  -p  "请输入你要分区的设备:"  disk
3 
4 read  -p  "请输入你要分区的大小:"  num
5 
6 echo  -e  "n\n\n\n\n${num}\nw\n " | fdisk ${disk}

 #准备为sdc盘进行分区

 #执行过后可以使用lsblk查看是否成功

 

标签:脚本,shell,变量,echo,初始,变量名,bash
From: https://www.cnblogs.com/chenjw0608/p/17844659.html

相关文章

  • linux 系统shell脚本防止同一时间被多次重复执行
    前言当shell脚本中需要执行的步骤较多、耗时较长时,为了避免脚本被其它进程重复执行导致操作逻辑被打乱,需要使该脚本同一时间内只能被一个进程执行,类似C#中的lock代码块操作,确保线程安全代码#!/bin/bash#创建文件锁路径lock_file=/tmp/my_script.lock#信号处理函数fun......
  • 第一个Shell脚本
    1.先创建.vimrc文件,自动生成shell脚本注释setignorecase#设置忽略大小写查找setcursorline#设置高亮当前行setautoindent#设置在插入模式下,对每行按与上行同样的标准进行缩进autocmdBufNewFile*.shexec":callSetTitle()"funcSetTitle(......
  • 第一个Shell脚本
    1.先创建.vimrc文件,自动生成shell脚本注释setignorecase#设置忽略大小写查找setcursorline#设置高亮当前行setautoindent#设置在插入模式下,对每行按与上行同样的标准进行缩进autocmdBufNewFile*.shexec":callSetTitle()"funcSetTitle(......
  • shell 中| && || () {} 用法以及shell的逻辑与或非
    前面几个比较简单|管道符,基本用法就是command1|command2,就是把前面的输出作为后面的输入&&就是合并两个命令,第一个命令成功的话才会执行第二个命令||不管第一个命令成功与否,第二个命令始终执行(这里说错了,应该是第一个执行不成功,才会执行第二个)重点学习()运算......
  • server_patrol.sh服务器巡查脚本
    server_patrol.sh#!/bin/bash#!/usr/bin/expect-f#!autherbywangxp#定义一个变量LANG="zh_CN.UTF-8"PUB_KEY_FILE=$HOME/.ssh/id_rsa.pubTITLE="XXXXX巡检报告`date+%F`"TXT_FILE_NAME="xjbg_`date+%y%m%d%H%M%S`.txt"TXT_DIR="`p......
  • linux shell "<" 、 "<<" 、 ">" 、">>" 的含义
    linux关于标准输入输出的规定Linux规定一下文件描述符文件描述符文件对应设备0标准输入keyboard,mouse1标准输出屏幕监视器2错误输出屏幕监视器输出重定向>,>>>和>>都是输出重定向符号其中>是重写>>是追加到文件进阶Shell中1>&22>&1&>......
  • 寻道大千免费偷桃脚本按键精灵源代码
    Function探寻_动态_ocr版本(x,y)//返回1是点进去的,2:没有点进去的3:没有老鼠Dim是否已经采集是否已经采集=falseDim计次时间计次时间=0DoIf找图_返回真假(581,1044,656,1083,"Attachment:探寻.bmp",0)=trueand找图......
  • 通过PowerShellPlus示例脚本学习PowerShell-通过WIndows集成验证登录SQLServer
    ##=====================================================================##Title:Connect-MSSQL-IPWindowsAuth##Description:ConnecttoSQLServerusingIPaddress,instanceand##Windowsauthentication##Author:Idera......
  • shell运维脚本优化
    我们在平常工作中,你是否感觉shell脚本只是命令的堆砌;很多时候只是为了实现功能而没有好的组织结构;自己的脚本都不想再看一遍;此让你的shell脚本有python一样的美感并且极易维护,真的是shell脚本写到停不下来。现以k8s发版脚本为例,看一下脚本的优化过程:#!/bin/bashset-euns=$......
  • 脱贫户收入录入脚本程序使用方法
    一、下载地址链接:https://pan.baidu.com/s/1cOlNdIjYpePxndtzUD2bFw提取码:pr9n二、配置运行环境(1)下载谷歌浏览器,查看浏览器版本(下一个低版本的Chrome)打开chrome在网页地址栏中输入“chrome://version/”来查看chrome版本(2)下载合适的chromedriver.exe访问此网站:http://ch......