# 注意等号两边不能有空格,命令才会有空格,像是 docker ps,如果加空格,linux 以为你写的是某种命令。
# 数字
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[*]};
字符串拼接
在linux下,字符串的声明可以不要引号,第一次学习很容易产生歧义。
# 下面两种写法效果是完全一样的
a=3;b=4;a=$a$b;echo $a;
a=3;b=4;a="$a$b";echo $a;
# 在做数字计算的时候,很容易发生的错误,最后会打印字符串:3+4
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,hh,let,Linux,字符串
From: https://www.cnblogs.com/chenss15060100790/p/17632104.html