bash快捷键:
Ctrl+a 跳转至命令行首
Ctrl+u 删除命令行首至当前光标所在处之前的所有内容
Ctrl+k 删除当前光标所在处至命令行尾的所有内容
Ctrl+l 清屏
Ctrl+c 中止或取消
Ctrl+z 把当前命令送至后台
======================================================================
bash编程语句格式:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
for、while、until、if
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
for 变量名 in 列表 ;do
循环体
done
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
while 测试条件;do
循环体
done
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
until 测试条件;do
循环体
done
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
if:三种格式
单分支:
if 测试条件;then
选择分支
fi
双分支:
if 条件1;then
分支1
else
分支2
fi
多分支:
if 条件1;then
分支1
elif 条件2;then
分支2
elif 条件3;then
分支3
...
else
分支n
fi
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
case 变量引用 in
PATTERN1)
分支1
;;
PATTERN2)
分支2
;;
*)
分支n
;;
esac
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
function F_NAME {
函数体
}
F_NAME(){
函数体
}
======================================================================
条件测试:
整型测试:数字之间的大小比较
-gt 大于
-lt 小于
-eq 等于
-ne 不等于
-ge 大于等于
-le 小于等于
字符串测试:字符串大小比较
> 大于
< 小于
== 等于
!= 不等于
=~
-n 不空为真,为空为假
-z 为空为真,不空为假
组合条件测试:在多个条件间实现逻辑运算
-a,&& 与
-o,|| 或
-not,! 非
======================================================================
文件判断:
-r 目标可读为真
-w 目标可写为真
-x 目标可执行为真
-f 目标是文件为真
-d 目标是目录为真
-c 目标为字符文件为真
-b 目标为块设备为真
======================================================================
逻辑判断:
-a 和 and
-o 或 or
! 非
======================================================================
实例:
1.新建10个用户tuser401-tuser410,并求他们的ID之和;
#!/bin/bash
#
declare -i idsum=0
for i in {401..410}; do
useradd tuser$i
userID=`id -u tuser$i`
let idsum+=$userID
done
echo "ID sum: $idsum."
2.求100以内所有正整数之和;
until方式:
#!/bin/bash
#
declare -i count=1
declare -i sum=0
until [ $count -gt 100 ]; do
let sum+=$count
let count++
done
echo $sum
while方式:
#!/bin/bash
#
declare -i count=1
declare -i sum=0
while [ $count -le 100 ]; do
let sum+=$count
let count++
done
echo $sum
3.提示用户输入一个用户名,如果用户存在,就显示用户的ID号和shell;否则显示用户不存在;
显示完成之后不退出,再次重复前面的操作,直到用户输入q或quit为止;
#!/bin/bash
#
read -p "Plz enter a username: " userName
while [ "$userName" != 'q' -a "$userName" != 'quit' ]; do
if id $userName &> /dev/null; then
grep "^$userName\>" /etc/passwd | cut -d: -f3,7
else
echo "No such user."
fi
read -p "Plz enter a username again: " userName
done
4.服务脚本示例
#!/bin/bash
#
# chkconfig: 2345 67 34
srvName=$(basename $0)
lockFile=/var/lock/subsys/$srvName
start() {
if [ -f $lockFile ];then
echo "$srvName is already running."
return 1
else
touch $lockFile
[ $? -eq 0 ] && echo "Starting $srvName OK."
return 0
fi
}
stop() {
if [ -f $lockFile ];then
rm -f $lockFile &> /dev/null
[ $? -eq 0 ] && echo "Stop $srvName OK" && return 0
else
echo "$srvName is not started."
return 1
fi
}
status() {
if [ -f $lockFile ]; then
echo "$srvName is running."
else
echo "$srvName is stopped."
fi
return 0
}
usage() {
echo "Usage: $srvName {start|stop|restart|status}"
return 0
}
case $1 in
start)
start
;;
stop)
stop ;;
restart)
stop
start ;;
status)
status ;;
*)
usage
exit 1 ;;
esac
转载于:https://blog.51cto.com/riaair/1535065