一、变量
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 $1 in "1") echo "周一" ;; "2") 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=0 ; i<$1 ; 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"