shell - 变量及数学计算

变量声明

# 注意:以 num=1 为例,等号两边不能有空格

# 数字
num=1

# 字符串
str0=test
str1='test'
str2="test"

# 字符串的三种声明方式是有区别的:
# 1. 单引号中的内容回原样输出,不会转义,不会取值。
# 2. 双引号中的内容输出,会转义,会取值。
# 3. 没有引号 和 双引号效果一样。
echo 'hello,\"hh\"';echo "hello,\"hh\"";echo hello,\"hh\";

# 数组
arr=(1 abc)

# 声明数组,第一个元素改成2,打印第一个元素,打印全部元素
arr=(1 abc);arr[0]=2;echo ${arr[0]};echo ${arr[*]};

字符串拼接

# 推荐使用这种方式,这种写法,不论是前端,还是后端,都能理解代码含义
a=3;b=4;echo "${a}xadasd${b}"

在linux下,字符串的声明可以不要引号,但是很容易产生歧义:

# 其实是声明另一个字符串 b,而不是将 b 赋值给 a
a=b;

# 本意是想声明一个变量 b,在 a 的基础,再拼接上 xxx,实际输出是空串
a=abc;b=$axxx

# 在做数字计算的时候,很容易发生的错误,最后会打印字符串:3+4
a=3;b=4;a=$a+$b;echo $a;

# 其它拼接方式

# 下面两种写法效果是完全一样的
a=3;b=4;a=$a$b;echo $a;
a=3;b=4;a="$a$b";echo $a;

# 用不同方式声明的字符串,是可以进行拼接的
echo 'date'"end";
a=3;echo $a"str";

运算

用于数字计算,只要记住下面两种,一定要注意关键字的使用,少了就变成字符串拼接了。

# 用 let 关键字
a=3;b=4;let c=$a+$b;echo $c
# 用美元符
a=3;b=4;c=$(($a+$b));echo $c

各种刁钻的案例,面试可能会遇到,加深一下记忆

# 打印 4
a=3;b=4;a=$b;echo $a
# echo缺少美元符,打印 c
a=3;b=4;let c=$a+$b;echo c
# 打印 7
a=3;b=4;let c=$a+$b;echo $c
# 打印 3+7
a=3;b=4;c=$a+$b;echo $c
# 打印 7
a=3;b=4;c=$(($a+$b));echo $c
a=3;b=4;c=`$a+$b`;echo $c
# 打印 3+4
a=3;b=4;c=`expr $a+$b`;echo $c
# 打印 7
a=3;b=4;let c=`expr $a+$b`;echo $c

posted on 2024-06-20 09:59  疯狂的妞妞  阅读(2)  评论(0编辑  收藏  举报

导航