shell 脚本专家指南笔记

1.设置verbose

在脚本添加 set -x/v

-x xtrace确认代码是否正确运行

+x 不再显示verbose

2.大小写转换

  $test=`echo $test|tr [a-z] [A-Z]`

3.系统时间使用

declare -a  DATE=(`date +"%S %M %k %d %m %Y"`)

或使用 $(date +%Y%m%d) 年月日

       $(date +%H%M%S) 时分秒

       $(date +%s)从1970年以来的秒

4.根据调试层次控制输出

debug=2

test $debug -gt 0 && “A little data”

test $debug -gt 1 && “some more data”

test $debug -gt 2 && “even some more data”

5.ostype()

 或者$OSTYPE

6.判断是否宕机

#!/bin/bash

set -x

islive()

{

   node=$1

   ping -n 3 $node >/dev/null>&1

   if [[ $? -eq 1 ]]

   then

   echo "this node is down!"

   else

   echo "this node is ok"

   fi

}

调用函数islive localhost

7.source 命令会执行库文件的赋值

  或者使用 .

8. shell 参数的传递

  $#参数个数

  $1第一个参数

  $n 第n个参数

  $*所有参数

9.if 语句

  if [ ]

     then

  else

  fi

 

     与 -a

      或 -o

      非 ! 

9.比较

     显式字符串比较 “ string1” = ”string2”

     数字比较 等于-qe 大于等于 -ge 小于等于-le 不等于-ne 大于-gt 小于-lt

10.echo -e 输出转义字符

   echo  -e “\t test test !\n” 输出两个tab test test !回车换行

11. egrep

12. getopts

   geropts 命令又一系列有效选项激活,它分析确定哪个选项需要的参数。每次激活getopts时,它检查是否还有选项需要处理。如果有,它就获取下一个需要处理的选项(修改OPTIND的值),将其保存在环境变量(ARGS)并返回真,否则返回假。

   while getopts

13.设置默认值

  test -z  $var && var=”default value ” ( test -z string 为零返回真)

  或者 [ -z ] && var=”default value” (test 等同 [ ] )

  最简洁 [ ! $var ] && var=”default value”

  $var || var=”default value”

  ${var:=”default value”}

  ${ var:”default value”} var没被定义同:=

   

  echo "${username:?$LOGNAME}" 若username未定义或空,则使用  $LOGNAME并退出,并显示脚本所运行的行数

  echo "${username?$LOGNAME}" username没被定义同:?

  ${username:-$LOGNAME} +在username未被或空定义时才使用$LOGNAME

  ${username:+$LOGNAME} +在username被定义时才使用$LOGNAME

 

 

 

14.grep

v  参数
-I :忽略大小写 
-c :打印匹配的行数 
-l :从多个文件中查找包含匹配项 
-v :查找不包含匹配项的行 
-n:打印包含匹配项的行和行标 

v   RE(正则表达式) 
\ 忽略正则表达式中特殊字符的原有含义 
^ 匹配正则表达式的开始行 
$ 匹配正则表达式的结束行 
\< 从匹配正则表达式的行开始 
\> 到匹配正则表达式的行结束 
[ ] 单个字符;如[A] 即A符合要求 
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求 

posted on 2020-03-02 14:07  飞雪天下  阅读(284)  评论(0编辑  收藏  举报

导航