概念
参考: shell基本操作
- 变量
 
    xname=张三 #定义变量
    echo $xname #使用变量
    xname=李四 #重新定义变量
    echo ${xname} #使用变量,加花括号是为了帮助解释器识别变量的边界
    readonly xname #定义只读变量
    unset xname #删除变量,不能删除只读变量
    #注意,变量名和等号之间不能有空格
- 字符串
 
name1='this is a string' #单引号
xname="hello" #双引号
name2="this is a var ${xname}" #使用
*单双引号和php类似*
name="abcdefg"
echo ${name}
echo "字符串name的长度:"${#name} #获取字符串长度
echo ${name:2:3} #提取子字符串,从第2个字符开始,截取2个
echo ${name:2} #截取第2个字符以后的全部
echo `expr length ${name}` #获取字符串的长度
echo `expr index ${name} d` #获取字符第一次出现的位置
echo `expr substr ${name} 2 3` #从第2个字符开始,取3个
- 数组
 
arr=("hello" "word") #定义数组
echo ${arr[1]} #读取数组
echo ${arr[@]} #获取全部
echo "数组的长度为:"${#arr[@]} #数组长度
echo "单个元素的长度为:"${#arr[1]} #单个长度
- 
    
传递参数
- $i:代表第i个参数
 - $#:代表参数个数
 - $*:代表所有参数,返回形式: 以”$1 $2 … $n”的形式输出所有参数
 - $@:与$*相同,返回形式: 以”$1” “$2” … “$n” 的形式输出所有参数
 - $?:代表上一个命令的返回值
 - $$:当前脚本的进程号
 - $!:后台运行的最后一个进程ID号
 
 - 
    
基本运算
 
- 算术运算
 
    echo `expr 2 + 2` #表达式和运算符要有空格,2+2是不对的,完整的表达式要被``包含
    if [ 2 == 2 ] #条件表达式要放在方括号之间,并且要有空格,例如: [$a==$b] 是错误的,必须写成 [ $a == $b ]
    then
    	echo "2==2"
    fi
- 关系运算
 
-eq -ne -gt -lt -ge -le
    a=$1
    b=$2
    if [ $a -eq $b ]
    then
    	echo '$a=$b'
    else
    	echo '$a!=$b'
    fi
- 布尔运算
 
! 非 -o 或 -a 与
- 逻辑运算
 
| && 逻辑and | 逻辑or | 
- 字符串运算
 
-z:字符串长度是否为0 -n:非0 str:是否为空 =:是否相等
- 文件测试
 
-f:是否文件 -d:是否目录 -x:是否执行 -e:是否存在
- printf命令
 
printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg  
printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 
printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 
printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 
%s %c %d %f都是格式替代符
%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
%-4.2f 指格式化为小数,其中.2指保留2位小数
- test命令
 
test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试
a=100
b=100
if test ${a} -eq $[a+b] #[]执行基本的算数运算
then
	echo "="
else
	echo "!="
fi