shell脚本学习记录1(运算符)

Shell 传递参数

我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$nn 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……

以下实例我们向脚本传递三个参数,并分别输出,其中 $0 为执行的文件名(包含文件路径):

#!/bin/bash

echo "shell 传递参数!"
echo "执行的文件名:$0"
echo "第一个参数为:$1"
echo "第二个参数为:$2"
echo "第三个参数为:$3"

shell脚本学习记录1(运算符)_第1张图片

 另外,还有几个特殊字符用来处理参数:

shell脚本学习记录1(运算符)_第2张图片

#!/bin/bash

echo "shell 传递参数!"
echo "执行的文件名:$1"
echo "参数个数:$#"
echo "传递的参数作为一个字符串显示:$*"

shell脚本学习记录1(运算符)_第3张图片

$* 与 $@ 区别:

  • 相同点:都是引用所有参数。
  • 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数 1、2、3,,则 " * " 等价于 "1 2 3"(传递了一个参数),而 "@" 等价于 "1" "2" "3"(传递了三个参数)。

Shell 数组(进阶)

关联数组

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脚本学习记录1(运算符)_第4张图片

 Shell 基本运算符

Shell 和其他编程语言一样,支持多种运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。expr 是一款表达式计算工具,使用它能完成表达式的求值操作。

#!/bin/bash

val=`expr 2 + 3`
echo "两个数的和为:$val"

注意

  • 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。
  • 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。

 算术运算符shell脚本学习记录1(运算符)_第5张图片

#!/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

shell脚本学习记录1(运算符)_第6张图片

注意:

  • 乘号(*)前边必须加反斜杠(\)才能实现乘法运算;
  • if...then...fi 是条件语句

 关系运算符

关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

shell脚本学习记录1(运算符)_第7张图片

 布尔运算符

shell脚本学习记录1(运算符)_第8张图片

 逻辑运算符

shell脚本学习记录1(运算符)_第9张图片

 字符串运算符

shell脚本学习记录1(运算符)_第10张图片

文件测试运算符 

文件测试运算符用于检测 Unix 文件的各种属性。

shell脚本学习记录1(运算符)_第11张图片

shell脚本学习记录1(运算符)_第12张图片 

 参考:Shell 基本运算符 | 菜鸟教程 (runoob.com)

你可能感兴趣的:(知识储备,Linux系统编程,学习)