一、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变量,字符串,数组的更多相关文章

  1. Linux-Shell基础(变量,字符串,数组)

    一. 什么是shell shell是一个用C语言编写的程序,它是用户使用Linux的桥梁,又是一种程序设计语言. Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统 ...

  2. shell重温---基础篇(shell变量&字符串以及git GUI运行shell脚本方式)

    既然是基础篇那肯定是需要对shell的各种需要注意的基本点进行说明了.接下来就是show time...    shell呢,是一个用C语言编写的应用程序,是用户使用linux的桥梁.所以呢,他既是一 ...

  3. [java变量] - 字符串数组转long型数组

    //定义字符串 String str = "1,3,6,9,4,2,1,6"; //截取字符串 String[] strArr = str.split(",") ...

  4. shell循环字符串数组

    #!/bin/bash arr=("0" "1" "2" "3" "4" "5" ...

  5. shell变量、函数和数组以及字符串的截取

    一.变量 1.shell变量名 (1)可以由字母.数字.下划线等字符组成.但是第一个字符必须是字母或者下划线. (2)若果变量中包含下划线(_)则要特别注意,$project_svn_$date.ta ...

  6. shell 分割字符串存至数组

    shell 分割字符串存至数组 shell编程中,经常需要将由特定分割符分割的字符串分割成数组,多数情况下我们首先会想到使用awk但是实际上用shell自带的分割数组功能会更方便.假如a=”one,t ...

  7. shell变量定义与数组-1

    1.查看系统所有shell和默认shell 查看系统所有的shell: cat /etc/shells 查看系统默认shell: echo $SHELL 2.第一个shell脚本,打印字符串Hello ...

  8. 五 shell 变量与字符串操作

    特点:1 shell变量没有数据类型的区分 2 Shell 把任何存储在变量中的值,皆视为以字符组成的“字符串”.    3  设定的变量值只在当前shell环境中有作用    4   不能以数字开头 ...

  9. shell切分字符串到数组

    shell切分字符串到数组 问题: 对于’aa,bb,cc,dd,ee’这样的字符串输出采用,分隔开的aa bb cc dd ee aa:bb is ok:/home/work按照":&qu ...

随机推荐

  1. Android SDK的下载与安装*(PC版)

    Android SDK的下载与安装   一.Android SDK简介下载地址:https://www.androiddevtools.cn/ 将下载后的安装包解压到相应的目录下,如下图: 三.安装A ...

  2. Word图片粘贴上传控件,直接粘贴图片到编辑器-DEDE

    很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...

  3. [CSP-S模拟测试]:虎(DFS+贪心)

    题目传送门(内部题15) 输入格式 第一行一个整数$n$,代表点数接下来$n-1$行,每行三个数$x,y,z$,代表点$i$与$x$之间有一条边,若$y$为$0$代表初始为白色,否则为黑色,若$z$为 ...

  4. 用 Flask 来写个轻博客 (25) — 使用 Flask-Principal 实现角色权限功能

    目录 目录 前文列表 扩展阅读 Flask-Principal 使用 Flask-Principal 来实现角色权限功能 添加 Role Model 在 Manager shell 中手动的添加角色 ...

  5. 按回车键切换input鼠标光标

    function focue(){ if(event.keyCode==13){//回车键的键值13 event.keyCode=9;//tab键的键值9 } }

  6. Shell脚本中判断输入变量或者参数是否为空的方法

    shell判断一个变量是否为空方法总结 https://www.jb51.net/article/154835.htm 1.判断变量 复制代码代码如下: read -p "input a w ...

  7. 添加阿里巴巴图标,让你页面小图标都是CSS3写成

    第一步把你想要的小图标添加到购物车里,然后如图下载 第二步下载完了,如下图有这些文件 第三步,把你需要的必要文件放到文件夹中,然后把需要的代码放到一个CSS中,然后引用 备注,这几个文件就是字体,必须 ...

  8. smb.conf免密登录文件

    # This is the main Samba configuration file. You should read the# smb.conf(5) manual page in order t ...

  9. Eclipse连接MySQL数据库(傻瓜篇)

    我的环境:MySQL:mysql-essential-5.1.51-win32 jdbc驱动:我已经上传到csdn上一个:http://download.csdn.net/source/3451945 ...

  10. link address

    http://en.wikipedia.org/wiki/Software_design http://www.codeproject.com/Articles/70061/Architecture- ...