在Bash中默认为字符串类型,其他类型我们可以通过declare来定义。
## 1.字符串型
Bash中的默认数据类型。
```
#!/bin/bash
string="hi my name is djangowang"
echo $string
```
## 2.数值型
在Bash中字符串类型只能用于字符串比较不能进行数学运算。我们通过declare -i来定义数值型。
```
declare -i number # 定义一个数值型
```
我们来对比一下字符串型与数字型。
```
#!/bin/bash
# 字符串
n=6/3
echo "n = $n" # n = 6/3
# 数值型
declare -i n
n=6/3
echo "n = $n" # n = 2
```
## 3.数组
数组中可以存放多个值。Bash只支持一维数组,不支持多维数组,初始化时不需要定义数组大小,与大部分编程语言类似数组元素的下标由0开始。
```
declare -a array
```
数组案例。
```
#!/bin/bash
declare -a array
array=(A B "C" D)
echo "第一个元素为: ${array[0]}"
echo "第二个元素为: ${array[1]}"
echo "第三个元素为: ${array[2]}"
echo "第四个元素为: ${array[3]}"
```
## 4.显示函数
declare -f 显示函数。
```
#!/bin/bash
function a(){
echo "test1"
}
function b(){
echo "test1"
}
declare -f # 显示以上函数
declare -f a # 限制指定函数
```
## 5.设置环境变量
declare -x指定的变量会成为环境变量,可供Shell以外的程序来使用。
```
#!/bin/bash
declare -x STRING="hello world" # 定义一个string的环境变量,建议环境变量为大写
export -p # 列出所有的Shell赋予程序的环境变量
```
## 6.只读变量
declare -r var1与readonly var1作用相同。当设置只读变量后,变量内容不可以修改。
```
declare -r var1 # 设置一个只读变量
#或
readonly var1
readonly -p # 用于显示只读变量的清单
```
案例。
```
#!/bin/bash
url="http://blog.puppeter.com/"
declare -r url # 或readonly url变量
url="http://blog.puppeter.com/" # 当修改变量时会报错误“/bin/sh: NAME: This variable is read only”
```
## 6.unset变量
unset用于删除变量。他有两个参数-f(仅删除函数)-v\(仅删除变量\)默认值。
```
#!/bin/bash
foo="hello world"
echo $foo # 输出hello world
unset foo # 删除foo变量
echo $foo # 为空
```
- Introduction
- 1.Shell编程基础
- 什么是Shell
- 编写第一个Bash程序
- 2.变量
- 什么是变量
- 变量四种赋值方式
- 指定变量类型
- 变量的类型
- 特殊变量
- 3.Bash符号相关
- Bash符号相关
- 特殊符号
- 数学运算符号
- 4.内建命令与外部命令
- 内建命令与外部命令
- 5.read命令
- read命令
- 6.条件语句
- if..then..fi
- if..then..else..fi
- if..then..elif..fi
- 空命令
- 文件测试符
- 字符串判断、与、或和非
- []与[[]]符号
- 7.Bash循环 && 分支语句
- while循环语句
- for循环
- for..in循环
- until循环
- select循环
- case分支语句
- 8.正则表达式
- 正则表达式
- 9.子Shell和受限Shell
- 子Shell
- 受限Shell
- 10.函数与函数的加载
- 函数语法与案例
- 递归函数
- 函数的加载
- 11.Bash脚本风格
- Bash脚本风格
- 12.Bash脚本调试
- Bash脚本调试
- 13.sed && awk
- sed
- 14.awk
- awk
- 15 Bash杂项 && 案例
- while循环的陷阱
- Bash的生命周期
- IO重定向
- /bin/bash和/bin/sh区别
- 命令杂项
- Shell加密
- 16.10.2.案例
- Bash版回收站
- 17.Bash中文速查表
- 中文速查表