shell 脚本专家指南笔记

摘要:
"elseecho"thisnodeisok"fi}调用函数islivelocalhost7.source命令会执行库文件的赋值或者使用.8.shell参数的传递$#参数个数$1第一个参数$n第n个参数$*所有参数9.if语句if[]thenelsefi与-a或-o非!回车换行11.egrep12.getoptsgeropts命令又一系列有效选项激活,它分析确定哪个选项需要的参数。每次激活getopts时,它检查是否还有选项需要处理。whilegetopts13.设置默认值test-z$var&&var=”defaultvalue”或者[-z]&&var=”defaultvalue”最简洁[!$var]&&var=”defaultvalue”$var||var=”defaultvalue”${var:=”defaultvalue”}${var:”defaultvalue”}var没被定义同:=echo"${username:?$LOGNAME}"若username未定义或空,则使用$LOGNAME并退出,并显示脚本所运行的行数echo"${username?

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 “ test test ! ” 输出两个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都符合要求

免责声明:文章转载自《shell 脚本专家指南笔记》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JavaWeb总结(十三)PAT 甲级 1147 Heaps (30 分)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ansible介绍与安装使用

Ansible 介绍与安装 目录 Ansible 介绍与安装 Ansible的定义 Ansible的基础架构 Ansible的程序目录结构 Anisible特性 注意事项 安装Ansible 自定义清单(配置组内成员) Anisble实现管理方式 Ansible常用模块 ping 模块 user 模块 command/raw/shell 模块 scr...

centos5.7下的kdump

我的centos5.7是台虚拟机,用的是virtual box安装的。安装的时候安装模式我没有选择图像界面,而是最小化安装,即只有命令行。 1,从上图可以看出我的kdump没有安装(5.7最小化安装没有装kdump),我的内存给的是4096而到了这里只能使用3个G。 2,接下来安装kexec-tools、kernel-debuginfo和kernel-d...

CentOS日常维护及常用脚本

[root@192-16.x.x xiewenming]# curl myip.ipip.net 当前 IP:42.62.x.x 来自于:中国 北京 北京 联通/电信 www.17ce.com cdn解析网站测试 如果遇到 -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8...

Linux向文件添加内容的几种方法

需求:向 file.txt 添加内容 "hello world" 方法1:文本编辑器 [root@linux test_shell]# vim file.txt 方法2:输出重定向 [root@linux test_shell]# echo "hello world" >> file.txt [root@linux test_shell]# c...

Java代码自动部署

Java代码自动部署 【 ①Java代码自动部署-总结简介】        代码部署是每一个软件开发项目组都会有的一个流程,也是从开发环节到发布功能必不可少的环节。对于Java开发者来说,Java代码的发布部署也是经常需要做的一件事,特别是互联网公司。代码的发布上线关系到保证生产环境能够正常启动及功能是否能正常运行,所以代码部署在整个项目开发周期还是占据很...

Linux shell awk中printf使用

printf 是 awk 的重要格式化输出命令printf格式化输出内容 格式:printf format,item1,item2...要点: 1,printf输出时要指定格式format2,formay用于指定后面的每个item输出的格式3,printf语句不会自动打印换行符 format格式: %c:显示单个字符%d,%i:十进制整数%e,%E:科学...