1.df -P    #df显示的结果方便截取
[hanqi@localhost ~]$ df -P
Filesystem         1024-blocks      Used Available Capacity Mounted on
/dev/mapper/VolGroup00-LogVol00 147282220   1541080 138138964       2% /
/dev/sda1               101086     12139     83728      13% /boot
tmpfs                  1037208         0   1037208       0% /dev/shm
2.#判断输入的数字是否为整数的方法
1) read num
 echo $num|grep -q '^[-]\?[0-9]\+$' && echo yes || echo error
2)echo 12.1 | grep -E '[^0-9]' >/dev/null && echo "not integer" || echo "integer" #判断正整数
#本人采用方法
3) [ "`echo $num/1 | bc`" == $num ] && echo "ok"
4)read -p "enter your b" test
 [ -z ${test//[0-9]} ] && echo "Integar" || echo "Non-integer"
3.script_name=${0##*/} #获取脚本名称
 script_path=${0%/*} #获取脚本路径,bash方式执行脚本是只能获得脚本名称,会使脚本出现错误
#获取脚本路径
,bash和绝对路径执行正确,但是./方式执行获得脚本路径有最后会多一个 .  未找到好的获得脚本绝对路径的方法,有的可以共享一下
getDir() {
        dir=`echo $0 | grep "^/"`
        if test "${dir}"; then
                dirname $0
        else
                dirname `pwd`/$0
        fi
}
dir=`getDir`
echo $dir
4.#关于时间
[root@fy disk_monitor]# date +%Y%m%d%H%M%S #年月日时分秒以数字形式显示,创建一个唯一的文件或目录
20120217162512
[root@fy disk_monitor]# date +%Y%m%d --date '1 days ago' #显示一天前的日期
20120216
[root@fy disk_monitor]# date '+%F %T' #记录日志
2012-02-17 16:31:10
5.#yes_or_no,有时需要用户决定是否执行某项操作,后边判断$a的值是什么来决定执行某些操作(或不执行某项操作)
echo -n "Whether backup(yes/no)?" #是否备份
        read y
        case "$y" in
                y | yes ) a=1;;
                n | no ) a=2;;
                * ) echo "Please enter yes or no!"
        esac
6.sed用法,处理文件流(内存中)
[root@fy disk_monitor]# echo "a/b/c" |sed 's/\///g' #去掉“/”
abc
[root@fy disk_monitor]# echo "a/b/c" |sed 's/\//-/g' #将/替换成-
a-b-c
sed -i可以直接更改文件内容,也可以采用cp一份sed完 > 临时文件保存到这个文件,在mv回去覆盖掉
7.shell脚本中执行sql语句的两种方法
#-p和密码之间没有空格,适合执行sql文件
mysql -h mysql_host -P mysql_port -u mysql_user -pmysql_pawd mysql_db < mysql.sql
#适合执行一个sql语句的方式。这种方法还是用于其他的需要自动交互式的脚本中
mysql -h mysql_host -P mysql_port -uroot <<EOF
        use mysql_db;
        show databases;
EOF
8.这个我也不知道是什么功能,总之有些特殊情况会用到
[root@fy script]# bash rsync/test.sh
a1
b2
[root@fy script]# cat rsync/test.sh
a="a b"
b=("1" "2")
i=0
for u in $a
do
 echo "$u${b[$i]}"
 i=$((i+1))
done
9.ls -l |awk '{print $NF}' #截取最后一个字段
10.shell脚本的调试方法
-n  读一遍脚本中的命令但不执行,用于检查脚本中的语法错误
-v  一边执行脚本,一边将执行过的脚本命令打印到标准错误输出
-x  提供跟踪执行信息,将执行的每一条命令和结果依次打印出来
三种选项的使用方法
1)$ sh -x ./script.sh #命令行提供参数
2)#! /bin/sh -x #在脚本开头提供参数
3)#! /bin/sh
if [ -z "$1" ]; then
  set -x
  echo "ERROR: Insufficient Args."
  exit 1
  set +x
fi   #在脚本中用set命令启用或禁用参数、可以只对脚本中的某一段进行跟踪调试