一、变量
1.系统变量
echo $PATH #环境变量 echo $USER #当前用户 echo $HOME #
2.自定义变量
- 变量名称一般用大写
- 等号两侧不能有空格
- 静态变量不能被unset
A=100 #定义变量, unset A #销毁变量 readonly B #定义静态变量, echo $A #使用变量$
指令赋值给变量
a1=$(ls -a) #使用$(),这个指令有的linux不兼容
a2=`ls -a` #或者使用 `` echo $a1
echo $a2
3.位置参数变量
#!/bin/bash
echo "输入参数个数共:$# 个"
echo "全部参数1是:$0 , 参数2是:$1"
echo "输入参数为:$@"
echo "输入参数为:$*"
4.预定义变量
$$ #获取当前进程号
$! # 后台运行的最后一个进程号
$? #返回最后一次命令的状态,0表示成功,
二、运算符
$()
echo $(((2+3)*4))
$[] ** 两个()等于一个[]
echo $[(2+3)*4]
expr
用expr时符号两边必须要有空格
echo `expr 2 + 3`
乘号
需要加\
echo `expr 2 \* 3`
比较运算符
数字的比较:
-eq 相等(equal)
-ne 不等(not equal)
-gt 大于(greater than)
-lt 小于(less than)
-ge 大于等于 (greater than or equal)
-le 小于等于 (less than or equal) 字符串的比较:
[ $str1 = $str2 ] 等于
[ $str1 != $str2 ] 不等于
[ -z $str ] 空字符串返回true
[ -n $str ] 或者 [ $str ] 非空字符串返回true
文件
-r file 用户可读为真
-w file 用户可写为真
-x file 用户可执行为真
-f file 文件为正规文件为真
-d file 文件为目录为真
-c file 文件为字符特殊文件为真
-b file 文件为块特殊文件为真
-s file 文件大小非0时为真
-t file 当文件描述符(默认为1)指定的设备为终端时为真
三、判断
1 if
#!/bin/bash if [ $1 -gt 15 ]
then
echo "大于"
elif [ $1 -lt 15 ]
then
echo "小于"
else
echo "等于"
fi
2 case
#!/bin/bash case $ in
"")
echo "周一"
;;
"")
echo "周二"
;;
*)
echo "other"
esac
四、循环
1. for循环
#!/bin/bash for i in "$*"
do
echo "$i"
done echo "*********************" for j in "$@"
do
echo "$j"
done
2.for循环
#!/bin/bash for (( i= ; i<$ ; i++))
do
echo "print $i"
done
3.while
#!/bin/bash while [ "$1" ]
do
echo "$1"
done
五、函数
1.系统函数
(1)basename 获取文件全路径下的文件名
[root@VM_0_2_centos ~]# basename /root/test.txt
test.txt
(2)dirname 获取文件全路径的路径部分
[root@VM_0_2_centos ~]# dirname /root/test.txt
/root
2.自定义函数
#!/bin/bash
getSum(){
SUM=$[$n1+$n2]
echo "求和:$SUM"
} read -p "输入参数1:" n1
read -p "输入参数2:" n2 getSum $n1 $n2
六、其他
1读取控制行
#!/bin/bash read -p "请输入:" NUM1
echo "输出: $NUM1"