shell编程(四)
shell中的数值处理
Linux中bash的变量值是以字符串的形式存储的,所以如果想当作数字使用的话需要进行转换.(前面已经用到了一些,但没有系统的总结)
此外,Shell中所有的算术运算都被当作整数运算,所以在有浮点数参与时要特别处理
let
计算算式的值,使用shell变量的值的时候不用$
#! /bin/bash
x=5 y=6
let t=x*y
echo $t
#运行结果为11
$((expression))
用于计算expression的值
expr
expr args
将它的参数当作表达式求值, 这里注意参数间的空格
例如
a =$(expr $x+1)
或
a=`expr $x+1`
args可以是数值计算也可以是逻辑判断
#! /bin/bash
a=5
b=6
expr $a \> $b
#判断式为真则输1, 否则输出0
shell中的数组
声明方式
#一
array_name[num]=value
array[1]="Hello"
array[2]="Giao"
#二
array=(value1 value2 [num]=value)
array=(Hello Giao [4]=World)
#三
declare -a arr=(1 2 3 4)
#输出所有的非空元素
${array_name [*]}
#输出已赋值的元素个数(空也算)
${#array_name [@]}
#或
${#array_name [*]}
#key对应的元素长度
${#array_name[key]}
具体如下图
shell中数组的删除方式
declare -a arr=(1 2 3)#声明arr数组
unset arr[0]#删除arr的第零个元素
unset arr#删除数组arr
shell数组的复制
因为要复制全部元素,参照上面就知道需要用到arr[*]
和arr[@]
了,在前面的演示中,知道他们都可以表示全部元素.而它们的区别也类似于$*与$@加不加双引号的区别了.
首先b=${arr[*}
就是表示将a复制给b.
同样的b都会得到a的全部元素, 而如果加上双引号变成b=${"arr[*]"}
的话, 无论a中有多少元素, 都将被看做一个元素复制给b, 也就是说b只有一个元素.
shell函数
func_name(pare)
{
comamand_list
}
在函数体内声明的局部变量需要用local
修饰, 表明那是局部变量, 局部变量在函数调用结束后销毁.
Here!
shell中的shift命令: 将脚本传入的参数左移一位, 即: 原来的让第n+1位参数变成第n位
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15105027.html