0


【玩转Linux操作】详细讲解shell的注释,变量,字符串,数组等操作

🎊专栏【玩转Linux操作】
🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。
🎆音乐分享【Counting Stars 】
欢迎并且感谢大家指出小吉的问题🥰

文章目录

在这里插入图片描述

🍔概述

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
Shell脚本可以直接在命令行中执行,也可以将一套逻辑组织成一个文件,方便复用。

Linux中常见的shell脚本有很多种,常见的有:

  • Bourne Shell(/usr/bin/sh或/bin/sh)
  • Bourne Again Shell(/bin/bash)
  • C Shell(/usr/bin/csh)
  • K Shell(/usr/bin/ksh)
  • zsh

Linux系统中一般默认使用bash,所以接下来讲解bash中的语法。

⭐注意

文件开头需要写

#! /bin/bash

,指明bash为脚本解释器。

⭐示例

新建一个

test.sh

文件

在这里插入图片描述
进入

test.sh

后,输入

#! /bin/bashecho"hello"

在这里插入图片描述
🏳️‍🌈使用

ll

命令查看权限,发现

test.sh

文件没有可写的权限
咱们来给它赋予权限

chmod +x test.sh

🏳️‍🌈然后运行

🏀当前路径下执行

./test.sh

🏀绝对路径下执行

/home/acs/test.sh

🏀家目录下执行

~/test.sh

🏀使用解释器执行

bash test.sh

在这里插入图片描述

🍔shell注释

⭐单行注释

每行中

#

后面的内容都是注释

# 这是一行注释echo'Hello World'#  这也是注释

⭐多行注释

示例

:<<EOF
第一行注释
第二行注释
第三行注释
EOF

其中EOF可以换成其它任意字符串。例如:

:<<abc
第一行注释
第二行注释
第三行注释
abc

:<<!
第一行注释
第二行注释
第三行注释
!

🍔shell变量

⭐定义变量

定义变量,不需要添加

$

符号

定义变量时,等号两边不能有空格

name1='fufu'# 单引号定义字符串name2="fufu"# 双引号定义字符串name3=fufu    # 也可以不加引号,同样表示字符串

⭐使用变量

使用变量,需要加上

$

符号,或者

${ }

符号。花括号是可选的,主要为了帮助解释器识别变量边界。

name=fufu
echo$name# 输出fufuecho${name}# 输出fufuecho${name}rice  # 输出fufurice

在这里插入图片描述

⭐只读变量

使用

readonly

或者

declare

可以将变量变为只读

name=fufu
readonly name
declare -r name  # 两种写法均可name=abc  # 会报错,因为此时name只读

⭐删除变量

使用

unset

可以删除变量

name=fufu
unset name
echo$name# 输出空行

在这里插入图片描述

被声明为只读的变量无法被unset删除

⭐自定义变量(局部变量)

子进程不能访问的变量

⭐环境变量(全局变量)

子进程可以访问的变量

🎈把自定义变量改为环境变量

name=fufu #定义变量export name #第一种方法declare -x name #第二种方法

🎈把环境变量改为自定义变量

exportname=fufu #定义环境变量declare +x name #改为自定义变量

🍔默认变量

在执行 shell 脚本时,可以向脚本传递参数。

$1

是第一个参数,

$2

是第二个参数,以此类推。特殊的,

$0

是文件名(包含路径)。例如:

$0

是文件名(包含路径),其实就是我们输入的第一段,输入绝对路径就显示绝对路径,输入相对路径就显示相对路径

🍔字符串

字符串可以用单引号,也可以用双引号,也可以不用引号。

🎁单引号和双引号的区别

1.单引号中的内容会原样输出,不会执行,不会取变量
2.双引号中的内容可以执行,可以取变量

在这里插入图片描述

⭐其他参数相关变量

在这里插入图片描述

name=fufu #不用引号echo'hello, $name \"hh\"'# 单引号字符串,输出 hello, $name \"hh\"echo"hello, $name\"hh\""# 双引号字符串,输出 hello, fufu "hh"

在这里插入图片描述

⭐获取字符串长度

name="fufu"echo${#name}#输出4

获取长度时,一定要带上#

在这里插入图片描述

⭐提取字串

name="fufu"echo${name:0:2}# 提取从0开始的2个字符 (与python的切片不同)

在这里插入图片描述

🍔数组

数组下标从0开始

⭐定义

数组用小括号表示,元素之间用空格隔开

array=(1 abc "def" fufu)

也可以直接定义数组中某个元素的值

array[0]=1
array[1]=abc
array[2]="def"
array[3]=fufu

⭐读取数组中某个元素的值

🎈格式

${array[index]}

在这里插入图片描述

在这里插入图片描述

⭐读取整个数组

🎈格式

${array[@]}# 第一种写法${array[*]}# 第二种写法

在这里插入图片描述

⭐读取数组的长度

🎈格式

${#array[@]}# 第一种写法${#array[*]}# 第二种写法

这个和上面一种的区别就是array前面有没有#

在这里插入图片描述

🥰如果大家有不明白的地方,或者文章有问题,欢迎大家在评论区讨论,指正🥰

标签: linux bash 运维

本文转载自: https://blog.csdn.net/m0_72853403/article/details/131236192
版权归原作者 在下小吉. 所有, 如有侵权,请联系我们删除。

“【玩转Linux操作】详细讲解shell的注释,变量,字符串,数组等操作”的评论:

还没有评论