首页 > 系统相关 >shell基础

shell基础

时间:2023-08-16 14:59:05浏览次数:41  
标签:脚本 输出 shell 变量 基础 命令 bash name

一.shell脚本

在 /etc/shells 中可以找到当前系统支持的shell脚本种类

 

 脚本用途

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

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

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

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

 

脚本构成

脚本申明(解释器):第一行开头“#!/bin/bash”,表示此行以下的代码语句是通过/bin/bash程序来解释执行。#!/bin/bash为默认的解释器还有其他类型的解释器,#!/bin/python #!/bin/expect

注释信息:以#开头的语句表示为注释信息

可执行语句、命令:比如echo命令用于输出" "之间的字符串

 

脚本执行逻辑和方式

相对绝对路径

相对路径 

./cipan.sh    需要执行权限! chmod  777 cipan.sh

绝对路径

~/cipan.sh  

指定解释器执行

bash cipan.sh

 

source 和 ‘.’ 启动 ,但是会在启动一个bash进程,影响当前环境

 

脚本可能发生的错误

1.命令错误:默认后续的命令还会继续执行,用bash -x进行检查

2.语法错误:可以使用bash -n 检查错误,错误的行数不一定准确

3.逻辑错误:只能自己去筛查

 

二.重定向与管道符

1)重定向

  类型              设备文件          文件描述编号          默认设备

标准输入        /dev/stdin           0                              键盘

标准输出        /dev/stdout         1                             显示器

标准错误输出 /dev/stderr         2                             显示器

 

标准输入:从该设备接收用户输入的数据

标准输出:通过该设备向用户输出的数据

标准错误:通过该设备报告执行出错的信息

重定向的意思就是,不通过标准输出到屏幕上,输出到自己指定的位置

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

2)多行重定向

Here Document 概述 使用 I/O 重定向的方式将命令列表提供给交互式程序或命令,比如 ftp、cat 或 read 命令。 HereDocument是标准输入的一种替代品, 可以帮助脚本开发人员不必使用临时文件来构建输入信息, 而是直接就地生产出一个文件并用作命令的标准输入。

EOF

—————————————————————————————————————————————————————————————————————————————————

—————————————————————————————————————————————————————————————————————————————————

 ————————————————————————————————————————————————————————————————————————————————

三.变量

1)常见shell变量类型

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

环境变量:由系统维护,用于设置工作环境

只读变量:只可以读取不可以更改

位置变量:通过命令行给脚本传递参数

预定义变量:Bash中内置的一类变量,不能修改 有些规定好的变量 放在那里让你使用

 2)变量命名要求

区分大小写

不能使程序中的保留字和内置变量:如:if, for,hostname 命令

只能使用数字、字母及下划线,且不能以数字开头,注意:不支持短横线 “ - ”,和主机名相反

不要使用内置的变量,使用英文尽量使用词义通俗易懂,PATH

 自定义变量

 name='value'

变量名=变量值

直接字串:name='root'

变量引用:name="$USER"

命令引用:name=COMMAND 或者 name=$(COMMAND)

注意:变量赋值是临时生效,当退出终端后,变量会自动删除,无法持久保存,脚本中的变量会随着脚本结束,也会自动删除

 

变量引用:

$name

${name}

 

弱引用和强引用

"$name " 弱引用,其中的变量引用会被替换为变量值

'$name ' 强引用,其中的变量引用不会被替换为变量值,而保持原字符串

 

变量追加值

格式 变量名+=追加值

 

1.赋值时使用双引号(" ")可以直接调用变量

2.赋值时使用单引号(' ')只会被认为是字符 不会调用变量

3.赋值时使用(``反撇在tab上面)命令替换,提取命令执行后的输出结 果 和$( ) 用法相同

4.{}可以分隔变量值

 

read -p

从键盘输入的内容变成变量

 

整数运算

expr和let只能进行整数的运算

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

运算符:

加法 +

减法 -

乘法 \ *

除法 /

取余 (取模)%

 

随机数生成

 1-100随机数

 

提取系统信息

 

环境变量

由系统提前创建,用来设置用户的工作环境

可以使用env查看环境变量

需要记住的常用环境变量

$USER 表示用户名称

$HOME 表示用户的宿主目录

$LANG 表示语言和字符集

$PWD 表示当前所在工作目录

$PATH 表示可执行用户程序的默认路径

 

标签:脚本,输出,shell,变量,基础,命令,bash,name
From: https://www.cnblogs.com/tsumiki/p/17629567.html

相关文章

  • 参加网络安全培训需要什么基础?学多久?
    目前,网络安全处于高速发展阶段,其薪资、发展前景都非常不错,因此吸引了一大波人前来学习。然而在学习网络安全之前,很多人总会产生一些顾虑,因此犹豫不决,那么学网络安全需要什么基础?对学历有要求吗?以下是具体的内容介绍。学网络安全需要什么基础?如果你想要参加培训学习......
  • JVS开源基础框架:平台基本信息介绍
    JVS是面向软件开发团队可以快速实现应用的基础开发脚手架,主要定位于企业信息化通用底座,采用微服务分布式框架,提供丰富的基础功能,集成众多业务引擎,它灵活性强,界面化配置对开发者友好,底层容器化构建,集合持续化构建。产品设计定位JVS是定位为辅助研发团队的快速脚手架,降低项目构建基础......
  • 工业交换机在雪亮工程中的应用:构建智慧城市的坚实网络基础
    “雪亮工程”即公共安全视频监控建设联网应用,是为响应国家“十三五”治安防控体系建设要求,同时为达到预警、预测、预防效果,以农村、社区为重点,对重要部位、复杂场所、农村薄弱地区进行视频监控建设,实现城乡治安防控建设一体化、立体化、信息化的社会治安防控体系工程。随着科技的不......
  • Jmeter 的 BeanShell
    通过BeanShell可以访问ctx、vars、props、prev、sampler、log;1.通过ctx可以访问jmeter运行时状态,比如线程数及线程状态;ctx:获取当前线程上下文数据(可获取所有信息);可以通过获取jmeterContent实例来获取运行时信息;ctx.getVariables(“变量名”):获取变量值(同vars.get())。ct......
  • x64ShellCode-通过PEB获取模块地址.
    以x64dbg.exe调试x64dbg.exe为例.汇编代码为如下.movrax,qwordptrgs:[0x0000000000000060]movrax,qwordptrds:[rax+0x10]二进制硬编码如下"\x65\x48\x8B\x04\x25\x60\x00\x00\x00\x48\x8B\x40\x10\x90\x90"结果如下:......
  • 图文结合丨带你轻松玩转MySQL Shell for GreatSQL
    一、引言1.1什么是MySQLShell?MySQLShell是MySQL的一个高级客户端和代码编辑器,是第二代MySQL客户端。第一代MySQL客户端即我们常用的MySQL。除了提供类似于MySQL的SQL功能外,MySQLShell还提供JavaScript和Python脚本功能,并包括与MySQL一起使用的API。......
  • Linux基础命令
    快捷键ctrl+c——停止当前命令 ctrl+z——停止当前命令,并用fg恢复ctrl+d——注销当前会话,与exit相似ctrl+w——删除当前行中的字ctrl+u——删除整行!!——重复上次命令exit——注销当前会话文件命令pwd、cd、ls、rm、mv、mkdir、touch、catls-al——列出隐藏文......
  • 高频SQL 50题(基础版): 上升的温度 | 2023-08-15
    问题表:Weather+---------------+---------+|ColumnName|Type|+---------------+---------+|id|int||recordDate|date||temperature|int|+---------------+---------+在SQL中,id是该表的主键。该表包含特定日期的温......
  • shell命令概述 Shell作用:命令解释器 介于操作系统内核与用户之间,负责解释命令行 获得
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......
  • 红帽认证RedHat-RHCSA shell的基本应用用户和组管理网络配置和防火墙管理笔记汇总
    shell命令概述Shell作用:命令解释器介于操作系统内核与用户之间,负责解释命令行获得命令帮助内部命令help命令的“--help”选项使用man命令阅读手册页命令行编辑的几个辅助操作Tab键:自动补齐反斜杠“\”:强制换行快捷键Ctrl+U:清空至行首快捷键Ctrl+K:清空至行尾快捷键Ctr......