首页 > 系统相关 >关于shell

关于shell

时间:2023-05-27 18:34:05浏览次数:31  
标签:shell 变量 echo 关于 array my name

shell脚本? 在说什么是shell脚本之前,先说说什么是shell。

shell是外壳的意思,就是操作系统的外壳。我们可以通过shell命令来操作和控制操作系统,比如Linux中的Shell命令就包括ls、cd、pwd等等。总结来说,Shell是一个命令解释器,它通过接受用户输入的Shell命令来启动、暂停、停止程序的运行或对计算机进行控制。

shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。

shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序。

那么什么是shell脚本呢?

shell脚本就是由Shell命令组成的执行文件,将一些命令整合到一个文件中,进行处理业务逻辑,脚本不用编译即可运行。它通过解释器解释运行,所以速度相对来说比较慢。

shell脚本中最重要的就是对shell命令的使用与组合,再使用shell脚本支持的一些语言特性,完成想要的功能。

注释 “# ”开头的就是注释,被编译器忽略

单行注释: #

多行注释: :<<EOF … EOF 或者 :<<! … ! (:<< 标识多行注释开始,并指定一个标识符作为开始结束的标志)

变量 变量类型

运行shell时,会同时存在三种变量:

局部变量:局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。

环境变量:所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。

shell变量:shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

变量操作

创建普通变量: name=“test” (=两边不可有空格)

创建只可函数体中使用的局部变量: local name=“test” (使用local修饰的变量在函数体外无法访问,并且local只能在函数体内使用)

使用变量: echo $name 或者 echo ${name} (推荐使用大括号版)

变量重新赋值: name=“new_test” (将原值覆盖)

只读变量: name=“only_read” -> readonly name (使用readonly标识后的变量,不可被修改)

删除变量: unset name; (删除之后不可访问,删除不掉只读变量)

字符串变量

1)单引号

单引号变量var='test' ,只能原样输出,变量无效

单引号中不能出现一个单独的单引号,转义也不可以

2)双引号

双引号变量var="my name is ${name}",变量有效

可出现转义符

3)拼接字符串

中间无任何+,之类的字符

name=“this is”" my name"; name=“this is my name”; name=“this” is “my name” 等效

name=‘this is'' my nam'; name=‘this is my name'; name=‘this' is ‘my name' 等效

4)获取字符串长度

在${}中使用“#”获取长度

name=“test”;

echo ${#name}; # 输出为4

5)提取子字符串

1:4 从第2个开始 往后截取4个字符

::4 从第一个字符开始 往后截取4个字符

name=“this is my name”;

echo ${name:1:4} #输出 is i

echo ${name::4} #输出 this

数组 bash只支持一维数组,不支持多维数组

定义数组:array_name=(li wang xiang zhang) (小括号做边界、使用空格分离)

单独定义数组的元素: array_para[0]=“w”; array_para[3]=“s” (定义时下标不连续也可以)

赋值数组元素:array_name[0]=“zhao”;

获取数组元素:

array_name[0]=“li”

array_name[3]=“zhang”

echo ${array_name[0]} # 输出"li"

echo ${array_name[1]} # 输出" "

echo ${array_name[3]} # 输出"zhang"

echo ${array_name[@]} # 输出"li zhang" 输出数组所有元素,没有元素的下标省略

取得元素个数:${#array_name[@]} 或者 ${#array_name[*]}

取得单个元素长度:${#array_name[1]}

参数传递 获取参数值:

$0 : 固定,代表执行的文件名

$1 : 代表传入的第1个参数

$n : 代表传入的第n个参数

$#:参数个数

关于shell_shell脚本*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数

关于shell_环境变量_02*相同,但是使用时加引号,并在引号中返回每个参数。

关于shell_Shell_03

标签:shell,变量,echo,关于,array,my,name
From: https://blog.51cto.com/u_16133235/6362854

相关文章

  • 思考-关于纸质还是电子笔记
    原因有长期用纸质记录规划每天生活的习惯,但是由于长期使用键盘打字,在使用纸笔写字的过程中,写字速度有点慢,手写速度更不上大脑的思考速度;其次,手部手写过程中出现不适感,而在打字的过程中,虽然有打错字的概率,但总体上还行。纸质的好处写作的内容较为随意写作的方式、风格较为......
  • 关于一些初等数论的证明
    未完工。目前咕掉的:卢卡斯定理真正有用的一个没有质数:威尔逊定理:\(p\)为质数的充要条件为\((p-1)!\equiv-1\pmodp\)证明:\(1.\)充分性:反证,假设\(p\)是合数。如果\(p\)为质数的平方,例如\(p=4\),则\(3!\equiv2\pmod4\),不成立。令\(p=k^2\),因为\(p>4\),所以\(......
  • Powershell 修改 DNS 记录权限
    执行脚本需要管理员权限,且需要运行的计算机安装AD管理工具。FunctionSet_DNSACL{###$SourceServerisControldestinationServer.param($SouServer,$DstServer)$DNSServer=(Get-ADDomain).PDCEmulator$ZoneNames=(Get......
  • 关于oracleJdk连接maven产生ssl验证问题
    问题:failedtotransferfromhttps://repo.maven.apache.org/maven2/duringapreviousattempt这是因为oraclejdk1.8存在ssl验证问题添加以下信息到idea的maven当中即可-Dmaven.wagon.http.ssl.insecure=true-Dmaven.wagon.http.ssl.allowall=true-Dmaven.wagon......
  • shell 常用命令3
    shell常用命令31sed用来自动编辑文件,可以用来实现替换配置文件的配置语法:sed[-hnV][-e<script>][-f<script文件>][文本文件]参数说明:-e<script>或--expression=<script>以选项中指定的script来处理输入的文本文件。-f<script文件>或--file=<script文件>以选项中指......
  • 关于AWS-VPC中的公有子网与私有子网-Public and private subnets
    关于AWS-VPC中的公有子网与私有子网的详细说明可以参考我们可以参考官网文档 AmazonVPC/ UserGuide 中有如下说明:PublicandprivatesubnetsIfasubnetisassociatedwitharoutetablethathasaroutetoaninternetgateway,it'sknownasa publicsubnet.I......
  • SpringMVC —— 关于获取请求参数的注解
    1、@RequestParam的3个作用?①起别名②设置默认值③给list集合赋值2、@RequestParam、@RequestBody、@PathVariable分别用于获取什么样格式的请求数据??号传值的参数json对象格式参数路径传值参数......
  • 关于员工管理系统的实现
    关于员工管理系统的实现***用到的知识点【1】os模块os就是“operatingsystem”的缩写,顾名思义,os模块提供的就是各种Python程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面也可以极大增强代码的可移植性。#本次用到的......
  • 2023-05-26:golang关于垃圾回收和析构函数的选择题,多数人会选错。
    2023-05-26:golang关于垃圾回收和析构的选择题,代码如下:packagemainimport( "fmt" "runtime" "time")typeListNodestruct{ Valint Next*ListNode}funcmain0(){ a:=&ListNode{Val:1} b:=&ListNode{Val:2} runtime.SetFi......
  • 【Shell】Display the ddl for all users in Oracle DB with bash script
     脚本说明:1、普遍用于使用expdp/impdp数据泵进行的数据(全库或者特定schemas)迁移2、适用于无PDB的Oracle环境3、适用于RAC,SI,ADG以及多实例的环境 使用方法:创建脚本为 display_all_users_ddl.sh然后将正文内容贴入并保存,然后执行bash display_all_users_ddl.sh......