1. 变量定义
name='user1' #等号左右不能有空格
2. 输出变量
echo $name
echo "my name is ${name}"
#在双引号中,用${}来准确的指定变量名,这里必须使用双引号,因为单引号会将字符串原封不动输出。
3. 文件测试
-d 测试是否为目录(directory)
-e 测试目录或文件是否存在(exist)
-f 测试是否为文件(file)
-L 测试是否为符合连接文件(link)
4. 字符串测试
= 字符串内容相同
!= 字符串内容不同
-z 字符串为空
5. 数学测试
-eq 等于(equal)
-ne 不等于(not equal)
-gt 大于(greater than)
-lt 小于(less than)
-ge 大于或等于(greater or equal)
-le 小于或等于(less or equal)
6. 逻辑测试
&& 逻辑与
|| 逻辑或
! 逻辑否
7. 用户交互
read -p 'please inpurt your name: ' name
echo $name
8. Bash重定向
1)正确输出 >
2)正确追加输出 >>
3)错误输出 2>
4)错误追加输出 2>>
5)正确和错误输出 &>
6)正确和错误追加输出 &>>
7)将正确和错误信息全部销毁 &>/dev/null
shell编程案例
1)光盘挂载
#!/bin/bash
if [ ! -e /media/BaseOS ] #注意空格
then
mount /dev/cdrom /media &> /dev/null
echo 'cdrom is ok'
else
echo 'cdrom is ok'
fi
2)创建用户
#!/bin/bash
read -p 'please input your name : ' name #最后一个name是一个变量名
if [ ! -z $name ]
then
read -p 'please input your password: ' pass
if [ ! -z $pass ]
then
useradd $name
echo $pass | passwd --stdin $name &> /dev/null
echo "your name is ${name}, your password is ${pass},create is ok"
else
echo 'pass is empty'
fi
else
echo 'name is empty'
fi
3)内存判断
#!/bin/bash
mem=`free -mh |grep 'Mem'|awk '{print $4}'`
if [ $mem -lt 400 ]
then
echo "mem is ${mem}, it < 400M"
else
echo "mem is ${mem}, it >= 400M"
fi
4)循环输出
#!/bin/bash
for name in `cat /etc/passwd | awk -F: '{print $1}'`
do
echo $name
sleep 1
done