shell变量,字符串,数组
一、shell变量定义:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头;
中间不能有空格,可以使用下划线;
不能使用标点符号;
不能使用bash里的关键字。
变量使用:
使用一个定义过的变量,只要在变量名前面加美元符号即可,
your_name="test"
echo $your_name
echo ${your_name}
花括号可以省略,但以下情况需要添加:
for skill in Ada Coffe Action Java; do
echo "I am good at ${skill}Script"
done
不然解释器会把$skillScript当成一个变量。
只读变量:
使用readonly命令可以将将变量定义为只读变量,只读变量的值不能被改变。
删除变量:
使用unset命令可以删除变量。
#!/bin/sh test=""
readonly test
test="" #报错,不可修改 unset test
echo $test #输出为空,变量已删除
运行shell时,会同时存在三种变量:
(1)局部变量,在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量;
(2)环境变量,包括shell启动的程序,都能访问环境变量;
(3)shell变量,由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量。
二、shell字符串
字符串可以用单引号,也可以用双引号,也可以不用引号。
str='this is a string'
单引号限制:
单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
单引号字符串中不能出现单独一个的单引号(也不能使用转义符)。
双引号:
your_name="test"
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str # -e参数表明处理特殊字符,不会当成一般文字输出,此处表示换行而不直接输出"\n" 输出为:
Hello, I know you are "test"!
双引号优点:引号里可以有变量,可以出现转义字符。
获取字符串长度:
string="abcd"
echo ${#string} #输出4
提取子字符串:
str="Hello, I know you!"
echo ${str::} #输出从第2个字符开始的4个字符 输出ello
查找子字符串:
str="Hello, I know you!"
echo `expr index "$str" l` #输出 3 注意和提取字符串的索引区别
三、shell数组
bash支持一维数组,下标由0开始,下标可以是整数或算术表达式。
定义数组:
array_name=(value0 value1 value2 value3)
或者
array_name=(
value0
value1
value2
value3
)
或单独定义数组的各个分量
array_name[0]=value0
array_name[1]=value1
array_name[n]=value
读取数组:
${数组名[下标]}
例如:
value=${array_name[]}
使用@符号可以获取数组中的所有元素,如下:
echo ${array_name[@]}
获取数组长度:和获取字符串长度的方法相同
length=${#array_name[@]} #取得数组元素的个数
#或者
length=${#array_name[*]}
len=${#array_name[n]} #获取数组单个元素的长度
shell变量,字符串,数组的更多相关文章
- Linux-Shell基础(变量,字符串,数组)
一. 什么是shell shell是一个用C语言编写的程序,它是用户使用Linux的桥梁,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统 ...
- shell重温---基础篇(shell变量&字符串以及git GUI运行shell脚本方式)
既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了.接下来就是show time... shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁.所以呢,他既是一 ...
- [java变量] - 字符串数组转long型数组
//定义字符串 String str = "1,3,6,9,4,2,1,6"; //截取字符串 String[] strArr = str.split(",") ...
- shell循环字符串数组
#!/bin/bash arr=("0" "1" "2" "3" "4" "5" ...
- shell变量、函数和数组以及字符串的截取
一.变量 1.shell变量名 (1)可以由字母.数字.下划线等字符组成.但是第一个字符必须是字母或者下划线. (2)若果变量中包含下划线(_)则要特别注意,$project_svn_$date.ta ...
- shell 分割字符串存至数组
shell 分割字符串存至数组 shell编程中,经常需要将由特定分割符分割的字符串分割成数组,多数情况下我们首先会想到使用awk但是实际上用shell自带的分割数组功能会更方便.假如a=”one,t ...
- shell变量定义与数组-1
1.查看系统所有shell和默认shell 查看系统所有的shell: cat /etc/shells 查看系统默认shell: echo $SHELL 2.第一个shell脚本,打印字符串Hello ...
- 五 shell 变量与字符串操作
特点:1 shell变量没有数据类型的区分 2 Shell 把任何存储在变量中的值,皆视为以字符组成的“字符串”. 3 设定的变量值只在当前shell环境中有作用 4 不能以数字开头 ...
- shell切分字符串到数组
shell切分字符串到数组 问题: 对于’aa,bb,cc,dd,ee’这样的字符串输出采用,分隔开的aa bb cc dd ee aa:bb is ok:/home/work按照":&qu ...
随机推荐
- 【leetcode】1032. Stream of Characters
题目如下: Implement the StreamChecker class as follows: StreamChecker(words): Constructor, init the data ...
- Java Web学习总结(13)Listener监听器
一,监听器介绍 监听器是一个专门用于对其他对象身上发生的事件或状态改变进行监听和相应处理的对象,当被监视的对象发生情况时,立即采取相应的行动.监听器其实就是一个实现特定接口的普通java程序,这个程序 ...
- paper 153:Delaunay三角剖分算法--get 这个小技术吧!
直接摘自百度百科,希望大家能根据下面的介绍稍微理顺思路,按需使用,加油! 解释一下:点集的三角剖分(Triangulation),对数值分析(比如有限元分析)以及图形学来说,都是极为重要的一项预处理技 ...
- 源码分析笔记Vector
概述 继承抽象类AbStractList,实现接口List.RandomAccess.Cloneable以及序列化接口默认容量大小为10,扩容增量为0,扩容为原容量的2倍如设置的增量大于0,则扩容为( ...
- Linux sudo 详解
简单的说,sudo 是一种权限管理机制,管理员可以授权于一些普通用户去执行一些 root 执行的操作,而不需要知道 root 的密码.严谨些说,sudo 允许一个已授权用户以超级用户或者其它用户的角色 ...
- 彻底搞定C指针-函数名与函数指针
函数名与函数指针 一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件 void MyFun(int x); //此处的申明也可写成:void MyFun( int ); int mai ...
- 测开之路五十三:unittest运行参数
Fixture:进行测试前的准备工作和测试后的清理操作.例如创建临时或是代理数据库,目录,服务进程等.用例(Case):最小的测试单元,检车特定输入的响应.TestCase作为所有用例的基类,测试ca ...
- 全面了解python中的类,对象,方法,属性
全面了解python中的类,对象,方法,属性 python中一切皆为对象,所谓对象:我自己就是一个对象,我玩的电脑就是对象,坐着的椅子就是对象,家里养的小狗也是一个对象...... 我们通过描述属性( ...
- selenium:Xpath定位详解
xpath定位在业界被戏称为元素定位的"屠龙宝刀",宝刀在手,武林我有.现在我们就来详解xpath定位方法. 一.xpath通过元素属性定位 xpath可以通过元素的属性来定位,如 ...
- Dubbo 系列(07-2)集群容错 - 服务路由
目录 Dubbo 系列(07-2)集群容错 - 服务路由 1. 背景介绍 1.1 继承体系 1.2 SPI 2. 源码分析 2.1 创建路由规则 2.2 RouteChain 2.3 条件路由 Dub ...