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