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都符合要求