`

Shell变量和数组使用详解

阅读更多

Shell 变量

定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:

your_name="w3cschool.cc"

注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:

  • 首个字符必须为字母(a-z,A-Z)。
  • 中间不能有空格,可以使用下划线(_)。
  • 不能使用标点符号。
  • 不能使用bash里的关键字(可用help命令查看保留关键字)。

除了显式地直接赋值,还可以用语句给变量赋值,如:

for file in`ls /etc`

以上语句将 /etc 下目录的文件名循环出来。


使用变量

使用一个定义过的变量,只要在变量名前面加美元符号即可,如:

your_name="qinjx"
echo $your_name
echo ${your_name}

变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:

for skill inAdaCoffeActionJavado
    echo "I am good at ${skill}Script"done

如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。

推荐给所有变量加上花括号,这是个好的编程习惯。

已定义的变量,可以被重新定义,如:

your_name="tom"
echo $your_name
your_name="alibaba"
echo $your_name

这样写是合法的,但注意,第二次赋值的时候不能写$your_name="alibaba",使用变量的时候才加美元符($)。


Shell 字符串

字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。

单引号

str='this is a string'

单引号字符串的限制:

  • 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。

双引号

your_name='qinjx'
str="Hello, I know your are \"$your_name\"! \n"

双引号的优点:

  • 双引号里可以有变量
  • 双引号里可以出现转义字符

拼接字符串

your_name="qinjx"
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting $greeting_1

获取字符串长度

string="abcd"
echo ${#string}#输出 4

提取子字符串

string="alibaba is a great company"
echo ${string:1:4}#输出liba

查找子字符串

string="alibaba is a great company"
echo `expr index "$string" is`

注意: 以上脚本中 "`" 是反引号,而不是单引号 "'",不要看错了哦。


Shell 数组

bash支持一维数组(不支持多维数组),并且没有限定数组的大小。

类似与C语言,数组元素的下标由0开始编号。获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0。

定义数组

在Shell中,用括号来表示数组,数组元素用"空格"符号分割开。定义数组的一般形式为:

数组名=(值12...n)

例如:

array_name=(value0 value1 value2 value3)

或者

array_name=(
value0
value1
value2
value3
)

还可以单独定义数组的各个分量:

array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen

可以不使用连续的下标,而且下标的范围没有限制。

读取数组

读取数组元素值的一般格式是:

${数组名[下标]}

例如:

valuen=${array_name[n]}

使用@符号可以获取数组中的所有元素,例如:

echo ${array_name[@]}

获取数组的长度

获取数组长度的方法与获取字符串长度的方法相同,例如:

# 取得数组元素的个数
length=${#array_name[@]}# 或者
length=${#array_name[*]}# 取得数组单个元素的长度
lengthn=${#array_name[n]}

Shell 注释

以"#"开头的行就是注释,会被解释器忽略。

sh里没有多行注释,只能每一行加一个#号。只能像这样:

#--------------------------------------------
# 这是一个自动打ipa的脚本,基于webfrogs的ipa-build书写:
# https://github.com/webfrogs/xcode_shell/blob/master/ipa-build
# 功能:自动为etao ios app打包,产出物为14个渠道的ipa包
# 特色:全自动打包,不需要输入任何参数
#--------------------------------------------
##### 用户配置区 开始 
######## 项目根目录,推荐将此脚本放在项目的根目录,这里就不用改了
# 应用名,确保和Xcode里Product下的target_name.app名字一致
###### 用户配置区 结束 #####

如果在开发过程中,遇到大段的代码需要临时注释起来,过一会儿又取消注释,怎么办呢?

每一行加个#符号太费力了,可以把这一段要注释的代码用一对花括号括起来,定义成一个函数,没有地方调用这个函数,这块代码就不会执行,达到了和注释一样的效果。

 

本文来自:http://www.w3cschool.cc/linux/linux-shell-variable.html

分享到:
评论

相关推荐

    shell变量,具体的

    #### 一、Shell变量概述 Shell变量是Shell脚本编程的基础之一,用于存储数据。在Shell脚本环境中,变量没有类型之分,它们只能存储文本字符,系统不会自动识别为其他类型(如数字、布尔值等)。在定义变量时,变量...

    shell 使用数组作为函数参数的方法(详解)

    在Shell脚本编程中,有时我们...通过这样的方法,你可以有效地在Shell函数中传递和处理数组,避免只传递数组第一个元素的问题。这在编写复杂的Shell脚本或工具时尤其重要,因为它允许你更灵活地组织和管理数据结构。

    Linux shell数组循环的实例详解

    熟练掌握数组和循环的使用,能够使你的Shell脚本变得更加灵活和高效。在编写脚本时,记得根据实际需求选择适合的数组操作和循环控制,以便更有效地处理数据。如果你在实践中遇到任何问题,欢迎在相关论坛或社区提问...

    Linux主要shell命令、sed、awk使用详解

    shell 的另一个重要特性是它自身就是一个解释型的程序设计语言,shell 程序设计语言支持绝大多数在高级语言中能见到的程序元素,如函数、变量、数组和程序控制结构。shell 编程语言简单易学,任何在提示符中能键入的...

    PHP预定义变量9大超全局数组用法详解

    它通常用于获取系统特定的信息,比如环境变量中的PATH、SHELL、USER等。 7. $_REQUEST $_REQUEST是一个结合了$_GET、$_POST和$_COOKIE的超全局数组。它包含由GET、POST和Cookie方法传递的所有数据。然而,由于安全...

    Linux Shell命令行及脚本编程实例详解PPT

    刘艳涛的《Linux Shell命令行及脚本编程实例详解》是清华大学出版社出版的一本教程,深入浅出地介绍了Shell的使用和脚本编程技巧。 **第2章 初识Linux Shell.pptx** 这一章节可能涵盖了Shell的基础概念,包括什么是...

    Linux shell 命令行及脚本编程实例详解

    5. **Shell变量**: - 用户自定义变量,如:`name="John"`,然后可以通过 `$name` 引用。 - 环境变量,如:`PATH`、`HOME`,影响整个Shell会话。 - 特殊变量,如:`$0`(脚本名)、`$#`(参数数量)、`$@`(所有...

    linux Shell(脚本)编程入门 实例讲解详解.doc

    Linux Shell编程入门实例讲解详解 Linux Shell编程是Linux系统中的一种灵活的工具,可以实现大量任务的自动化,特别擅长系统管理任务。 Shell编程语言可以使用 bash 进行编程,因为 bash 是免费的并且很容易使用。 ...

    linux主要shell命令详解

    它可以支持许多常见的编程元素,如变量、数组、函数和控制结构等。这意味着用户可以编写复杂的脚本来自动化任务或创建简单的应用程序。 #### 四、Shell的种类 Linux中存在多种Shell类型,最常见的包括: 1. **...

    linux shell 简明教程.pdf

    #### 二、Shell变量详解 **1. Shell变量的设置、查看和清除** - **设置**: 变量通过简单的赋值语句设置,如`variable=value`。 - **注意**: 等号两边不能有空格。 - **空值**: 若要给变量赋空值,可以在等号后面...

    shell编程.txt shell基本使用

    ### Shell基本使用与系统变量详解 #### 一、Shell系统变量概述 在Shell脚本编程中,系统变量是预定义的环境变量,用于传递或获取有关脚本运行时的信息。理解这些变量对于编写高效且健壮的脚本至关重要。 #### 二...

    Shell脚本编程详解-吐血共享.docx

    Shell脚本编程详解将从编写、修改权限和执行 Shell 程序的步骤开始,讲解 Shell 命令行书写规则、在 Shell 程序中使用参数和变量、表达式比较、循环结构语句和条件结构语句、在 Shell 程序中使用函数和调用其他 ...

    Linux环境变量相关内容

    - 使用`env`或`printenv`命令可以查看当前shell环境下所有已定义的全局环境变量。 - 使用`echo $VARIABLE_NAME`命令可以直接输出某个环境变量的值,其中`$`符号用于引用环境变量。 2. **查看特定进程的环境变量**...

    强力推荐Shell 脚本教程 ppt

    它不仅涵盖了基础概念,还深入探讨了Shell变量的管理和操作技巧,是理解并掌握Shell脚本编程的一个很好的起点。 #### 核心知识点详解 ##### Linux操作系统 - **概述**:Linux是一种免费开放源代码的操作系统,支持...

    linux下shell编程

    Shell 编程涉及多种元素,包括但不限于变量、数组、函数以及程序控制结构等。 - **脚本创建**:使用文本编辑器(例如 vi 或者 nano)来创建 Shell 脚本。脚本的第一行通常会指定使用的 Shell 类型,例如: ```...

    吴天雄--shell知识点总结.doc

    理解变量的定义和使用,以及各种运算符和控制结构,将有助于编写出高效、灵活的 Shell 脚本,从而提高工作效率。对于更复杂的任务,可以进一步深入学习 Shell 的高级特性,如函数、数组、循环等。

    basic shell编程基础

    ### Linux Shell 编程基础知识详解 #### 一、Shell编程概览 Linux Shell编程是一种用于自动化任务、系统管理和脚本开发的技术。它基于各种Shell解释器(如Bash、csh、sh等),通过编写一系列命令来实现复杂的功能...

    Linux Shell编程.

    ### Linux Shell编程知识点详解 #### 一、Shell编程概述 **Shell** 在 Unix/Linux 系统中扮演着极其重要的角色,既是用户与操作系统交互的主要接口,也是一种强大的编程语言。通过 Shell 编程,用户不仅可以自动化...

Global site tag (gtag.js) - Google Analytics