我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……
以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名(包含文件路径):
- #!/bin/bash
-
- echo "shell 传递参数!"
- echo "执行的文件名:$0"
- echo "第一个参数为:$1"
- echo "第二个参数为:$2"
- echo "第三个参数为:$3"
另外,还有几个特殊字符用来处理参数:
- #!/bin/bash
-
- echo "shell 传递参数!"
- echo "执行的文件名:$1"
- echo "参数个数:$#"
- echo "传递的参数作为一个字符串显示:$*"
$* 与 $@ 区别:
Bash 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。
关联数组使用 declare 命令来声明,语法格式如下:
declare -A array_name
-A 选项就是用于声明一个关联数组。
关联数组的键是唯一的。
以下实例我们创建一个关联数组 site,一个关联数组 site1,并用不同方式创建不同的键值:
- #!/bin/bash
-
- #创建关联数组,并创建不同的键值
- declare -A site=(["baidu"]="www.baidu.com" ["shougou"]="www.shougou.com" ["huohu"]="www.huohu.com")
- #先声明一个关联数组,再设置键和值
- declare -A site1
- site1["google"]="www.google.com"
- site1["runoob"]="www.runoob.com"
- site1["taobao"]="www.taobao.com"
-
- #访问shell数组
- echo ${site[*]}
- echo ${site1[@]}
- echo ${site["baidu"]}
在数组前加一个感叹号 ! 可以获取数组的所有键,例如:
- declare -A site
- site["google"]="www.google.com"
- site["runoob"]="www.runoob.com"
- site["taobao"]="www.taobao.com"
-
- echo "数组的键为: ${!site[*]}"
- echo "数组的键为: ${!site[@]}"
Shell 和其他编程语言一样,支持多种运算符
原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
- #!/bin/bash
-
- val=`expr 2 + 3`
- echo "两个数的和为:$val"
-
注意:
- #!/bin/bash
- a=10
- b=20
-
- val=`expr $a + $b`
- echo "a + b : $val"
-
- val=`expr $a - $b`
- echo "a - b : $val"
-
- val=`expr $a \* $b`
- echo "a * b : $val"
-
- val=`expr $b / $a`
- echo "b / a : $val"
-
- val=`expr $b % $a`
- echo "b % a : $val"
-
- if [ $a == $b ]
- then
- echo "a 等于 b"
- fi
- if [ $a != $b ]
- then
- echo "a 不等于 b"
- fi
注意:
关系运算符只支持数字,不支持字符串,除非字符串的值是数字。
文件测试运算符用于检测 Unix 文件的各种属性。