(二)变量 variate

#!/bin/bash

# 定义变量时,变量名不加$
# 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
# 中间不能有空格,可以使用下划线(_)。
# 不能使用标点符号。
# 不能使用bash里的关键字(可用help命令查看保留关键字)。
your_name="runoob.com"

# 语法错误: 未预期的文件结尾
# for file in `ls /etc/`

# 使用定义过的变量,{}加花括号是为了帮助解释器识别变量的边界
echo $your_name
echo ${your_name} # 推荐使用

# 变量重新赋值
your_name="ljx"
echo ${your_name}

# 只读变量 readonly
readonly your_name
# error: your_name: 只读变量
# your_name="xxx"

# 删除变量 unset
# unset your_name # 不能删除只读变量
my_name="ljx"
unset my_name
# echo ${my_name} # 无输出

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

# Shell 字符串:单引号、双引号、无引号
# 单引号
str='this is a string'
# 限制
# 单引号里的任何字符都会原样输出,字符串中的变量是无效的!
# 不能出现单独的单引号,转义也不行。成对出现,作为字符串拼接使用
str1='1''2''3'
echo ${str1} #123

# 双引号
# 优点1:可以有变量
# 优点2:可以出现转义字符
your_name="runoob"
str="Hello, I know you are \"${your_name}\"! \n"
echo -e $str #加-e之后,\n表示换行

# 获取字符串长度
string="abcd"
echo ${#string}

# 提取子字符串
string="runoob is a great site"
echo ${string:1:4} # 从字符串第 2 个字符开始截取 4 个字符

# 查找子字符串
string="runoob is a great site"
echo `expr index "$string" io`  # 输出 4

# Shell 数组
# 可以不使用连续的下标,而且下标的范围没有限制。
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[@]}
length1=${#array_name[*]}
lengthn=${#array_name[n]}
echo ${length} $length1 $lengthn

# 注释
# (1) #
# (2)
:<<EOF
注释内容...
注释内容...
注释内容...
EOF

:<<xxx
注释内容...
注释内容...
注释内容...
xxx

:<<1
注释内容...
注释内容...
注释内容...
1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值