1、变量设置规则
2、变量赋值与运算
1)变量赋值:
name=lbg 等号前后不能有空格
name=“Lebron James” 变量值中有空格要用双引号
echo
n
a
m
e
用
{name} 用
name用{}更保险
shopt -s -o nounset 设置“先声明再使用”
2)取消变量:
unset 释放变量和函数的内存
3)特殊变量(位置参数)
${n}:输入的第n个参数($0表示脚本名字,$1-$9表示输入的第1至9个参数,十以上的参数要用花括号表示)
$#:输入参数的数量(即上面花括号中的n值)
$@:输入的所有参数,但把每个参数区分对待
$*:代表输入的所有参数,并把所有的参数看成一个整体
$!:输入的最后一个参数
$?:上一个命令的返回值(用于在脚本中判断之前命令的执行状态,任何非0的返回都表示非正常执行)
示例:
$ cat test.sh
#!/bin/bash
echo $0
echo $1
echo $2
echo $#
echo $@
$ ./test.sh test1.txt test2.txt
./test.sh
test1.txt
test2.txt
2
test1.txt test2.txt
4)数组:
declare -a Array=(‘ladawn’ ‘lbg’ ‘lbj’)
5)只读变量:
declare -r N=10
readonly N=10
6)函数中的变量:
若不声明local,则函数中的变量也为全局变量。
若声明为local(local var=200),则变量的作用域只在函数内。
7)引用:
双引号:弱引用,特殊符号($、\、`)仍然解析为特殊的意义。
单引号:强引用,所有的字符都是字面意思,不再有特殊意义。
8)命令替换:
A=$(data)或者A=data
,表示将data命令的输出结果取出,赋给A
9)bc运算:
用于浮点数计算输出。通过管道使用。
tatal=$(echo “34/15” | bc)
10)数值运算:
let “sum+=1” #表示sum = sum+1
let “j=sum%2” #表示j = sum % 2
参考:https://www.cnblogs.com/ladawn/p/8412553.html
3、shell整数运算
方法一:expr
expr 1+2
expr $num1 + $num2
sum expr $num1 + $num2
方法二:$(())
echo $((num1+num2))
echo $((2**10)) #2的10次方
方法三:let
let sum=1+1
let i++
4、shell小数运算
echo “2*4” |bc
echo “2**4” |bc
echo “scale=2;6/4” |bc
echo ‘BEGIN{print 1/2}’
echo “print 5.0/2” | python
num=$(echo “scale=2; 0.13 + 0.1” | bc)
echo $num
运行脚本,结果显示为:.23
我发现shell中显示小于1的小数,小数点前都没有0
bc本身还没有选项来设置输出小数点前的0,只能用别的方法进行格式化输出了,比如:
echo “scale=2; 0.13 + 0.1” | bc | awk ‘{printf “%.2f”, $0}’
5、shell运算符
对于字符串运算只能用:> 、 < 、 ==(==和=等效)、 != 、 -n(长度是否非0) 、 -z(长度是否为0),注意:没有>=和<=运算符
对于数字运算有两种方式:> 、 < 、 == 、 != 和 -eq(等于)、-ge(大于等于)、-gt(大于)、-le(小于等于)、-lt(小于),主要倾向于第二种方式