【玩转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/bash
echo "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  # 输出fufu
echo ${name}  # 输出fufu
echo ${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 #第二种方法

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

export name=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前面有没有#

在这里插入图片描述

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

  • 63
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 54
    评论
评论 54
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

在下小吉.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值