当前位置:网站首页>Shell基础入门
Shell基础入门
2022-06-30 12:12:00 【向上的狼】
一、Shell变量
1.1、定义变量时, 变量名不加美元符号
- 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)
1.2、变量的类型
局部变量
- 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
环境变量
- 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行
Shell变量
- shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量
# 变量的声明name="zhangsan"# 变量的调用echo $nameecho ${name}# 只读变量 /bin/sh: NAME: This variable is read only.url="https://www.google.com"readonly urlurl="https://www.runoob.com"# 删除变量unset name
二、Shell的字符串
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号,但可成对出现,作为字符串拼接使用。
双引号:
- 双引号里可以有变量
- 双引号里可以出现转义字符
# 声明字符串str1="hello world 1"str2='hello world 2'str3='hello world3# 字符串拼接--双引号name='sunwukong'name1="hello, "$name"" //可以拼接name2="hello, ${name}" //可以拼接# 字符串拼接--单引号passwd='123456'passwd1='hello, '$passwd'' //可以拼接passwd2='hello, ${passwd}' //不能拼接echo $passwd2 # hello, ${passwd} !# 字符串的长度echo ${#email} //获取字符串的长度echo ${email:1:4} //获取email字符串从1开始, 取4个字符(字符串的计数是从开始的)
三、Shell数组
- bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
- 数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。
# 定义数组 括号来表示数组,数组元素用"空格"符号分割开数组名=(值1 值2 ... 值n)favs=("足球" "蓝球" "乒乓球球" "保龄球")# 读取数组 ${ 数组名[下标]}fav=${favs[1]}# 使用 @ 符号可以获取数组中的所有元素echo ${favs[@]}# 获取数组的长度length1=${#favs[@]}length2=${#favs[*]}
四、Shell的注释
- 以 # 开头的行就是注释,会被解释器忽略。
- 通过每一行加一个 # 号设置多行注释
#--------------------------------------------# 这是一个注释# author:# site:#--------------------------------------------##### 服务器配置-start ############### 服务器配置-end ###### 特殊的多行注释:<<EOF注释内容...注释内容...注释内容...EOF:<<!注释内容...注释内容...注释内容...!注: 这里EOF和!都是可以更改的, 但是得保证前面和后面都得是一样的
五、Shell参数传递
执行Shell脚本时, 向脚本传递参数, 脚本内获取参数的格式为: $n, n代表一个数字.

#!/bin/bashecho "Shell 传递参数实例!";echo "执行的文件名:$0";echo "第一个参数为:$1";echo "第二个参数为:$2";echo "第三个参数为:$3";# ./hello.sh 11 22 33 44
边栏推荐
- pyqt5界面的布局与资源文件的载入
- Redis的配置文件及新数据类型
- A review of quantum neural networks 2022 for generating learning tasks
- List集合
- Building of Hisilicon 3559 universal platform: obtaining the modified code of data frame
- 海思3559 sample解析:venc
- Apple executives openly "open the connection": Samsung copied the iPhone and only added a large screen
- [cf] 803 div2 B. Rising Sand
- MySQL中变量的定义和变量的赋值使用
- Pinda general permission system (day 7~day 8)
猜你喜欢

List集合

Tencent two sides: @bean and @component are used on the same class. What happens?

Use of polarplot function in MATLAB

不同类型的变量与零究竟是如何比较

SuperMap 3D SDKs_ Unity plug-in development - connect data services for SQL queries

How do different types of variables compare with zero

Map集合

【300+精选大厂面试题持续分享】大数据运维尖刀面试题专栏(二)

问卷星问卷抓包分析

List collection
随机推荐
Double dqn notes
Q-learning notes
【一天学awk】运算符
Grep match lookup
“\“id\“ contains an invalid value“
Hisilicon 3559 developing common sense reserves: a complete explanation of related terms
海思3559开发常识储备:相关名词全解
问卷星问卷抓包分析
Remove invalid parentheses [simulate stack with array]
[cf] 803 div2 B. Rising Sand
How to select an OLAP database engine?
Redis的基本操作的命令
Map集合
Redis cache problem
ECDSA signature verification in crypt
Substrate 源码追新导读: 5月中旬: Uniques NFT模块和Nomination Pool
Splitting e-commerce systems into micro services
Vision based robot grasping: from object localization, object pose estimation to parallel gripper grasping estimation
MySQL中变量的定义和变量的赋值使用
[bug solution] fiftyone reports attributeerror: module 'CV2' has no attribute 'GAPI_ wip_ gst_ Gstreamerpipeline 'error resolution