Shell 脚本学习笔记(一)——Shell 变量和数组

与其当一颗流星,燃尽璀璨却不留下一丝灰烬,不如默默一生,在身后留下一座拱门,一方苗圃,一堵缀满果实的墙。

在写 shell 脚本的过程中,某些语法总是遗忘,为了让自己经常性且有条理的复习,在此整理了相关 shell 笔记。



1. Shell 简介

Shell 采用 C 语言编写,是用户和 linux 内核沟通的桥梁;Shell 既是一种命令语言,也是一种程序设计语言(解释性语言)。简而言之,是用于接收应用程序/用户命令,然后调用操作系统内核。
而Shell 脚本就是将完成一个任务的所有的命令按照执行的先后顺序,自上而下写入到一个文本文件中,然后执行。

2. 一个简单 shell 脚本

脚本名为 hello.sh

#!/bin/bash
echo "Hello World!"
mkdir -p demo1/demo2/hello.md
cd demo1/demo2
echo "hello" >hello.md 
# 向文档中写入内容
  1. #! 表示告诉系统其后路径所指定的程序即是解释此脚本文件的shell程序。

  2. # 表示脚本中的单行注释
    多行注释:

    :<<EOF
    ...
    EOF
    
    或者
    
    :<<!
    ...
    !
    

运行脚本

  1. 首先给文件执行权限

    chmod 700 hello.sh
    或者
    chmod +x hello.sh
    
  2. 运行脚本

    ./demo
    运行脚本可以是绝对路径,也可以是相对路径,上述展示的是相对路径
    

3. Shell 变量

3.1 系统变量

  • $HOME :主目录路径
  • $PWD:当前路径
  • $SHELL:输出结果是 :/bin/zsh, 脚本环境
  • $USER:当前用户名

3.2 自定义变量

var="hello"

变量命名规范

  • 等号两边不能有空格
  • 变量名称可以由字母、数字、下划线组成,不能以数字开头,环境变量一般大写。
  • 变量默认类型是字符串类型,无法进行数值运算
    ➜  shelldemo C=1+2
    ➜  shelldemo echo $C
    1+2
    
  • 变量升级为全局变量
    export 变量名
    

注意:
将 demo目录下的文件循环输出

for file in `ls /demo`
或
for file in $(ls /demo)

3.3 变量的使用

# 定义变量
name="zeng"
echo $name
echo ${name}
推荐使用花括号,因为当有多个变量名进行拼接时,,可以帮助解释器识别变量的边界。

3.4 Shell 字符串

首先 Shell 变量默认类型是字符串类型,字符串可以使用单引号、双引号或者不加引号,但是当变量值有空格时,必须要加引号。

单引号

➜  ~ C=1+2
➜  ~ echo $C
1+2

➜  ~ a='$HOME'
➜  ~ echo $a
$HOME

注意

  • 单引号里不能包含单引号
  • 单引号里的内容会被原样输出,且单引号里的变量是无效的

双引号

➜  ~ b="$HOME"
➜  ~ echo $b
/Users/zengzhaoxia

➜  ~ c="hello\n world"
➜  ~ echo $c
hello
 world

注意

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

3. 字符串操作

3.1 获取字符串长度

➜  ~ a='abcd'
➜  ~ echo ${#a}
4

3.2 提取字符串

字符串的第一个索引值为0

➜  ~ b="Hollo World"
➜  ~ echo ${b:6:3}.  #从第7个字符开始截取3个字符
Wor
➜  ~ echo ${b:6}
World

4. Shell 数组

5.1 定义数组

Shell 只支持一维数组,数组大小无限定,下标索引从0开始,数组元素用“空格”分隔开。

array=(value0 value1 value2 value3)

定义数组方法1

array=(value0 value1 value2 value3)

定义数组方法2

array=(value0
 value1
 value2
 value3
 )

定义数组方法3

可以不使用连续的下标
array[0]=value0
array[2]=value2

5.2 读取数组

1. 获取数组中单个元素
${array[下标]}

2. 获取数组中所有元素
${array[@]}

3. 获取数组长度
len=${#array[@]}
或者
len=${#array[*]}

4. 获取数组中单个元素的长度
len1=${#array[下标]}
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
1. 什么是shell脚本Shell脚本是一种编程语言,它是在Unix和Linux操作系统使用的一种脚本语言。它可以帮助用户自动化任务,并且可以运行一系列命令。 Shell脚本通常以.sh扩展名结尾。 2. 为什么要学习shell脚本学习shell脚本可以帮助你自动化任务,提高工作效率。Shell脚本也可以帮助你编写小工具,方便你自己或其他人使用。Shell脚本还可以帮助你更好地理解Linux和Unix操作系统。 3. 如何编写一个简单的shell脚本? 首先,在命令行输入命令nano test.sh,创建一个名为test.sh的文件。然后,在文件输入以下内容: #!/bin/bash echo "Hello World" 接着,按下Ctrl + X,然后按下Y,最后按下Enter,保存并退出文件。接下来,您需要在命令行输入以下命令: chmod +x test.sh ./test.sh 这将使test.sh文件可执行,并运行脚本。在命令行,您应该看到输出“Hello World”。 4. shell脚本的注释是什么? 注释是用于向脚本添加说明和文档的文本。在Shell脚本,注释以“#”开头。注释不会被脚本解释器执行,但可以帮助其他人更好地理解脚本。 5. 如何在shell脚本使用变量变量是一个用于存储值的占位符。在Shell脚本,您可以使用以下语法来定义变量: my_variable="Hello World" 您可以使用echo命令来输出变量的值: echo $my_variable 6. 如何在shell脚本使用条件语句? 在Shell脚本,您可以使用条件语句来执行基于条件的操作。以下是一个示例条件语句: if [ $my_variable = "Hello World" ] then echo "The variable contains Hello World" else echo "The variable does not contain Hello World" fi 7. 如何在shell脚本使用循环? 在Shell脚本,您可以使用for循环或while循环来执行重复的操作。以下是一个示例for循环: for i in 1 2 3 4 5 do echo $i done 以上代码将输出数字1到5。 8. 如何在shell脚本使用函数? 在Shell脚本,您可以使用函数来组织和重复使用代码。以下是一个示例函数: function say_hello { echo "Hello World" } 您可以通过以下方式调用函数: say_hello 9. 如何从shell脚本读取用户输入? 在Shell脚本,您可以使用read命令来从用户那里读取输入。以下是一个示例: echo "What is your name?" read name echo "Hello $name" 以上代码将提示用户输入他们的名字,并输出“Hello”后跟用户的名字。 10. 如何在shell脚本使用命令行参数? 在Shell脚本,您可以使用$1、$2、$3等变量来访问命令行参数。例如,以下是一个示例脚本,它接受两个命令行参数并将它们相加: #!/bin/bash sum=$(($1 + $2)) echo "The sum of $1 and $2 is $sum" 您可以使用以下命令来运行脚本并传递两个参数: ./test.sh 2 3 以上代码将输出“The sum of 2 and 3 is 5”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小曾同学.com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值