一.变量
1. 不需要在使用变量前声明其类型,只需赋值就可以,每个变量值都是字符串。
2. 查询某进程运行时的环境变量:
cat /proc/$PID/environ //PID为相关进程id
pgrep 应用程序//获取进程id
例如:pgrep vi 得到2553
cat /proc/2553/environ
cat /proc/2553/environ | tr ‘\0’ ‘\n’//每行显示一对kv
3. 区别变量名与指之间是否有空格
var=value //无空格表示赋值
var = value //有空格表示判断是否相等
4. 取值符$
value=”hadoop”
echo $value 或者 echo ${value}
5. 环境变量是未在当前进程中定义,而是从父进程中继承而来的。
echo $PATH
export PATH=”$PATH:/home/user/bin”
6. 获取字符串长度:
Var=hadoop
length=${#var}
echo $length
7. 获知当前shell版本
echo $SHELL 或者 echo $0
二.shell进行数学运算
1.使用let时,变量名前不需添加$
let var1++
let var2+=5
2.使用[]时
Res =$[var1 + 32] 或者 res =$[$var2 + 43]
3.使用(())
Res=$((var2 + 100))
以上方法只能使用于整数运算,不支持浮点数
4.数学计算高级工具bc
echo 4*0.345 | bc
echo “scale=2;3/8”| bc ; 设定小数精度为2
十进制转换二进制:
no=100
echo “obase=2;$no” |bc
二进制转换十进制:
var=1100100
echo “obase=10;ibase=2;$var” |bc
计算平方以及平方根
echo “sqrt(100)” | bc
echo “10^10” | bc
三.数组
1.bash支持普通数组和关联数组,普通数组只能使用整数作为数组索引,关联数组可以使用字符串作为数组索引。
2.数组的定义:array1={1 2 3 4 5 6}
array2[0]=”test1”
array2[1]=”test2”
3.打印数组值:
echo ${arrar1[2]}
echo ${array2[*]}
4.求数组长度
echo ${#array1[*]}
5.关联数组
(1)使用关联数组前需声明:
declare -A myarray
(2)例如:
declare -A fruits
fruits=([apple]=’100dollars’ [orange]=’200dollars’)
echo “apple costs ${fruits[apple]}”
3.列出数组索引
echo ${!myarray[*]} 或者 echo ${!myarray[@]}