2_Shell变量和注释

1. 首先是变量命名规范,和大多数语言差不多

  1. 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头
  2. 中间不能有空格,可以使用下划线_
  3. 不能使用标点符号。
  4. 不能使用bash里的关键字,可用help命令查看保留关键字

2. 定义一个变量

myname="Pning"

运行效果如下
在这里插入图片描述

3. 输出定义过的变量

echo ${myname}

或者

echo $myname

运行效果如下
在这里插入图片描述

4. 将一个变量设置问只读变量

demo_1.sh

#!/bin/bash
myname="Pning"
readonly myname
myname="pning"
echo ${myname}

对照组
demo_2.sh

#!/bin/bash
myname="Pning"
myname="pning"
echo ${myname}

运行效果
在这里插入图片描述

5. 删除变量

demo_1.sh

#!/bin/bash
myname="Pning"
unset myname
echo ${myname}

对照组
demo_2.sh

#!/bin/bash
myname="Pning"
echo ${myname}

运行效果

在这里插入图片描述

6. 变量类型

运行shell时,会同时存在三种变量:
(1.) 局部变量:局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量
(2.) 环境变量: 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行,必要的时候shell脚本也可以定义环境变量
(3.) shell变量: shell变量是由shell程序设置的特殊变量,shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行

7.字符串

shell的字符串有两种模式:'单引号字符串'"双引号字符串"

  1. 单引号字符串
    (1. )单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的
    (2. )单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用
  2. 双引号字符串
    (1.)双引号里可以有变量
    (2.)双引号里可以出现转义字符

demo.sh

#!/bin/bash
name="Pning"
str1='My name is \n ${name}'
str2="My name is \n ${name}"
echo -e ${str1}
echo "----------------"
echo -e ${str2}

默认情况下,echo关闭了对转义字符的解释
-e 参数可打开echo对转义字符的解释功能。
-E关闭转义字符,是默认值
运行结果
在这里插入图片描述

  1. 字符串的拼接
#!/bin/bash
name="Pning"
str1='My name is '${name}
str2='My name is ${name}'
echo ${str1} ${str2}
echo "------------------"
str3="My name is ${name}"
str4="My name is "${name}
echo ${str3} ${str4} 

运行结果
在这里插入图片描述

  1. 获取字符串长度
str="Pning"
echo ${#string} 

运行结果
在这里插入图片描述

  1. 查找子字符串
str="My name is Pning"
echo `expr index "${str}" "in"`

查询在str变量中第一个出现的i字符或者第一个出现的’n’字符的位置
注意的是,echo后面 ` 是反引号,而不是单引号 ‘’
运行结果
在这里插入图片描述

  1. 提取子字符串
str="My name is Pning"
echo ${str:1:4}

字符串第 2 个字符开始截取 4 个字符
运行效果
在这里插入图片描述

数组

  1. 数组的定义
    (1.)整体定义
myname_1=(P N I N G)

这个类似于java的char[] = {'P','N','I','N','G'}
(2.)一个个赋值

myname_2[0]=p
myname_2[1]=n
myname_2[2]=i
myname_2[3]=n
myname_2[4]=g

运行效果
在这里插入图片描述
2. 读取数组数据

(1.)读取所有元素

echo ${myname_1[@]}
echo ${myname_2[*]}

运行效果
在这里插入图片描述

(2.)通过索引获取元素

echo ${myname_1[0]}
echo ${myname_2[0]}

运行效果
在这里插入图片描述

  1. 获取数组的长度

(1.)获取数组元素个数

echo ${#myname_1[@]}
# 或者
echo ${#myname_1[*]}

(2.)获取数组某个元素的长度

echo ${#myname_1[1]}

运行效果
在这里插入图片描述

注释

shell的注释也是有两种,当行注释和多行注释

  1. 当行注释#和大众语言的//具有一样的效果,但注意的是,这个符号只有在这一行的开头时才会起作用
  2. 多行注释
    格式位已:<<符号开头,以符号结尾,例如下面示例
:<<EOF
注释内容
EOF

:<<'
注释内容
'

:<<!
注释内容
!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值