变量声明
# 注意:以 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
标签:arr,shell,变量,打印,echo,拼接,let,字符串,数学计算
From: https://www.cnblogs.com/chenss15060100790/p/18258136