Shell学习心得(一):变量
1、begin
#!/bin/bash echo "Hello World !"
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
echo 命令用于向窗口输出文本。
2、运行shell的2种方式
2.1、作为可执行程序
将上面的代码保存为 test.sh,并 cd 到相应目录:
chmod +x ./test.sh #使脚本具有执行权限 ./test.sh #执行脚本
2.2、作为解释器参数
这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:
/bin/sh test.sh /bin/php test.php
这种方式运行的脚本,不需要在第一行指定解释器信息,写了也没用。
3、变量
3.1、定义变量
you_beautiful="xiaomengxin.com"
注意,变量名和等号之间不能有空格,这可能和所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
、命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 、中间不能有空格,可以使用下划线(_)。 3、 不能使用标点符号。 4 、不能使用bash里的关键字(可用help命令查看保留关键字)。
3.2、使用变量
使用一个定义过的变量,只要在变量名前面加美元符号即可,如:
your_name="jiayn"
echo $your_name
echo ${your_name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界。
已定义的变量,可以被重新定义,如:
your_name="minglu" echo $your_name your_name="wang" echo $your_name
3.3、只读变量
#!/bin/bash
readonly xiao_mengxin="真可爱"
echo ${xiao_mengxin}
xiao_mengxin="太丑了"
echo ${xiao_mengxin}
执行结果报错:
真可爱 真可爱 /tmp//main.: xiao_mengxin: readonly variable
3.4、删除变量
unset variable_name
变量被删除后不能再次使用。unset 命令不能删除只读变量。
#!/bin/bash
xiao_mengxin="真可爱"
echo ${xiao_mengxin}
unset xiao_mengxin
echo ${xiao_mengxin}
执行结果:
真可爱
3.5、变量类型
运行shell时,会同时存在三种变量:
- 局部变量 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
- 环境变量 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
- shell变量 shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
4、字符串
4.1、字符串表示
字符串可以用单引号,也可以用双引号,也可以不用引号
str='this is a string'
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
#!/bin/bash
xiao_mengxin='可爱'
echo ${xiao_mengxin}
str="我知道你的名字叫\"${xiao_mengxin}\"!\n"
echo -e $str
输出:
可爱 我知道你的名字叫"可爱"!
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符
4.2、获取字符串长度
#!/bin/bash
xiao_mengxin='可爱ne'
echo ${#xiao_mengxin}
输出结果:8
4.2、提取子字符串
#!/bin/bash xiao_mengxin='zen me zhe me ke ai ne' :} #是不是看起来很熟悉,有没有想到python里面的切片
输出结果:zen m
4.2、查找子字符串
#!/bin/bash xiao_mengxin='zen me zhe me ke ai ne' echo `expr index "$xiao_mengxin" km`
输出结果:5
5、数组
bash支持一维数组(不支持多维数组),并且没有限定数组的大小。
数组元素的下标由 0 开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于 0。
5.1、定义数组
在 Shell 中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:
array_name=(value0 value1 value2 value3)
5.2、读取数组
${array_name[n]}
#!/bin/bash
array_name=("xiao_mengxin" "xiao_luming" "xiao_xishi" "xiao_yingji")
]}
输出结果:xiao_luming
使用 @ 符号或者*符号可以获取数组中的所有元素,例如:
${array_name[@]}
${array_name[*]}
5.3、获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
#!/bin/bash
array_name=("xiao_mengxin" "xiao_luming" "xiao_xishi" "xiao_yingji")
echo ${#array_name[@]}
# 或者
echo ${#array_name[*]}
# 取得数组单个元素的长度
]}
输出结果:
6、注释
以 # 开头的行就是注释,会被解释器忽略。
多行注释可以使用以下格式:
#!/bin/bash
:<<!
array_name=("xiao_mengxin" "xiao_luming" "xiao_xishi" "xiao_yingji")
echo ${#array_name[@]}
# 或者
echo ${#array_name[*]}
# 取得数组单个元素的长度
]}
!
echo "qunaerle"
或者:
#!/bin/bash
:<<Esfdsfdsf
array_name=("xiao_mengxin" "xiao_luming" "xiao_xishi" "xiao_yingji")
echo ${#array_name[@]}
# 或者
echo ${#array_name[*]}
# 取得数组单个元素的长度
]}
Esfdsfdsf #一致即可
echo "qunaerle"
Shell学习心得(一):变量的更多相关文章
- Shell学习之环境变量配置文件(三)
Shell学习之环境变量配置文件 目录 环境变量配置文件简介 环境变量配置文件作用 其他配置文件和登录信息 环境变量配置文件简介 环境变量配置文件简介 环境变量配置文件中主要是定义对系统操作环境生效的 ...
- Shell学习之Bash变量详解(二)
Shell学习之Bash变量详解 目录 Bash变量 Bash变量注意点 用户自定义变量 环境变量 位置参数变量 预定义变量 Bash变量 用户自定义变量:在Bash中由用户定义的变量. 环境变量:这 ...
- shell学习笔记3---shell变量
Shell变量的定义.赋值和删除 脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则. 在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有 ...
- Shell学习笔记 - 环境变量配置文件(转)
一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件 或 . 配置文件 2. 命令示例 [root@localhost ~]# sou ...
- Shell学习笔记 - 环境变量配置文件
一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件 或 . 配置文件 2. 命令示例 [root@localhost ~]# sou ...
- Shell学习心得(二):传递参数、运算符
1.传递参数 可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n.n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 向脚本传递三个参数, ...
- shell学习笔记之变量(一)
一.普通变量 1.使用变量之前通常并不需要事先声明,通常赋值的时候创建他们2.默认所有的变量都被看做字符串,并且以字符串存储3.变量区分大小写4.变量名前面添加$符号来访问变量,赋值的时候只需要使用变 ...
- Shell学习心得(四):流程控制
一.if else 1. if if 语句语法格式: if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): ]; ...
- shell 学习笔记3-shell变量扩展
一.特殊位置参数变量 1.特殊位置参数变量 在shell中比如:$0.$1.$#,等被称为特殊位置参数变量,当命令行.函数.脚本执行等处传递参数时,就需要使用位置参数变量 参数说明如下: 2.示例$1 ...
随机推荐
- Python的编码风格
1.采用四个空格作为缩进 2.一行代码不要超多79个字符 3.使用空行分割类,函数,以及大块代码 4.注释独占一行 5.使用文档字符串 6.操作符的两侧,逗号后面都要加空格(但是括号的里侧是不加的) ...
- 用post请求方式实现对地图服务的基本操作
ArcGIS Server REST API 中的很多操作都可以用以下方式实现,具体参数的设置请查看其中的详细说明 public List<string> getGeometry(stri ...
- Python_字符串的映射与可变字符串的应用
''' maketrans().translate() maketrans()方法用来生成字符映射表,而translate()方法则按映射表中定义的对应关系转换并替换其中的字符,使用这两个方法的组合可 ...
- String的lastIndexOf()用于获取字符串中某个子字符串最后一次出现的位置
String还定义有lastIndexOf(String str,int from) 意思为str在字符串多次出现时将返回最后一次出现的位置. eg: String str = "I can ...
- Java 领域从传统行业向互联网转型你必须知道的事儿
我为什么要写这篇文章 武林中,"天下武功出少林"指各门各派的武功都与少林武学有一定的渊源,技术也是相同的道理,对于Java领域的应用而言,传统行业与互联网行业的技术都来自J2SE和 ...
- linux timerfd系列函数总结
网上关于timerfd的文章很多,在这儿归纳总结一下方便以后使用,顺便贴出一个timerfd配合epoll使用的简单例子 一.timerfd系列函数 timerfd是Linux为用户程序提供的一个定时 ...
- 关于checkpoint
Ⅰ.Checkpoint 1.1 checkpoint的作用 缩短数据库的回复时间 缓冲池不够用时,将脏页刷到磁盘 重做日志不可用时,刷新脏页 1.2 展开分析 page被缓存在bp中,page在bp ...
- Hot swapping
83. Hot swapping83.1 Reload static contentThere are several options for hot reloading. The recommend ...
- sql server 高可用故障转移(完结)
安装完二个sql server 节点后,对外的虚拟ip是192.168.2.105 测试将sql server转到另一节点 转移后连接sql 虚拟ip 测试 通过windows日志查看远行状态 总结 ...
- 跟我学ASP.NET MVC之七:SportsStrore一个完整的购物车
摘要: SportsStore应用程序进展很顺利,但是我不能销售产品直到设计了一个购物车.在这篇文章里,我就将创建一个购物车. 在目录下的每个产品旁边添加一个添加到购物车按钮.点击这个按钮将显示客户到 ...