Shell变量

✦ 定义变量时,变量名不加美元符号
  ● 命名只能用英文字母、数字和下划线,首个字符不能以数字开头。
  ● 中间不能有空格,可以使用下划线。
  ● 不能使用标点符号。
  ● 不能使用bash里的关键字。
✦ 变量的类型
  ● 局部变量
    · 局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
  ● 环境变量
    · 所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。
  ● Shell变量
    · shell变量是由shell程序设置的特殊变量,shell变量中有一部分是环境变量,有一部分是局部变量。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 变量的声明
name="zhangsan"

for file in `ls /etc`

for file in $(ls /etc)

#变量的调用
echo $name

echo ${name}

# 只读变量
url="http://www.baidu.com"
readonly url

# 删除变量
unset name

Shell的字符串

✦ 字符串是shell编程中最常用的数据类型,字符串可以用单引号,也可以用双引号,也可以不用引号。
✦ 单引号
  ● 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的。
  ● 单引号字串中不能出现单独的一个单引号,但可成对出现,作为字符串的拼接使用。
✦ 双引号
  ● 双引号里可以有变量。
  ● 双引号里可以出现转义字符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 声明字符串
str1="hello world 1"
str2='hello world 2'

# 字符串拼接——双引号
name='zhangsan'
name1="hello,"$name"!"
name2="hello,${name}!"
echo $name1 // hello,zhangsan!
echo $name2 // hello,zhangsan!

# 字符串拼接——单引号
pwd='123456'
pwd1='hello,'$pwd'!'
pwd2='hello,${pwd}!'
echo $pwd1 // hello,123456!
echo $pwd2 // hello,${pwd}

# 字符串的长度
email="123456@qq.com"
echo ${#email} // 13
echo ${email:1:5} // 23456
echo ${email:4:7} // 56@qq.c

Shell数组

✦ bash支持一维数组,不支持多维数组,并且没有限定数组的大小。
✦ 数组元素的下标由零开始编号,获取数组中的元素要利用下标,下标可以是整数或算数表达式,其值应大于或等于0。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 定义数组 括号来表示数组,数组元素用“空格”符号分割开
数组名=(值1 值2 ... 值n)
favs=("足球" "篮球" "乒乓球")

# 读取数组
fav=${favs[0]}
echo $fav // 足球

# 使用@符号来获取数组中的所有元素
echo ${favs[@]} // 足球 篮球 乒乓球

# 获取数组的长度
length1=${#favs[@]} // 3
length2=${#favs[*]} // 3

Shell的注释

✦ 以#开头的行是注释,不会被执行。
✦ 通过每行加一个#设置多行注释。

1
2
3
#-----------------------------
# 注释
#-----------------------------

✦ 特殊的多行注释

1
2
3
4
:<<EOF
注释内容...
注释内容...
EOF