shell脚本集合
1. shell脚本求助
问题一:
HWaddr=`ifconfig eth0 | grep HWaddr | awk '{print $NF}'`
说明:用grep获取包含HWaddr即MAC地址的那行内容,然后通过awk中的$NF获取最后一个字段即MAC地址内容。
问题二:
#!/bin/sh
if [ $# -ne 2 ]; then #判断参数个数,若不等于2提示错误及正确用法
echo "Two arguments are required!"
echo "Usage: `basename $0` num1 num2" #basename用于去除脚本路径仅取脚本名
exit 1
fi
let rtn=$1*$1+$2*$2 #使用shell内建命令let做运算
echo $rtn
exit 0
2. 什么是shell脚本
操作系统与外部最主要的接口就叫做shell。shell是操作系统最外面的一层。shell管理你与操作系统之间的交互:等待你输入,向操作系统解
释你的输入,并且处理各种各样的操作系统的输出结果。shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输
入,并且可以立即得到响应),或者以shellscript(非交互)方式执行。shellscript是放在文件中的一串shell和操作系统命令,它们可以被
重复使用。本质上,shellscript是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的command.com
。它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourneshell(sh)和Cshell(csh)。
交互式shell和非交互式shell交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交
互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。shell也可以运行在另外一种模式:非
交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。
shell的类型在UNIX中主要有两大类shellBourneshell(包括sh,ksh,andbash)Bourneshell(sh)Kornshell(ksh)BourneAgain
shell(bash)POSIXshell(sh)Cshell(包括cshandtcsh)Cshell(csh)TENEX/TOPSCshell(tcsh).
附:linux系统的shell原理
Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。
shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向
Linux传递命令时,内核会做出相应的反应。shell是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用
程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。
3. shell脚本里语句解释
grep做文本过滤,查找操作
sed做文本替换操作,将 [{}="] 这个[ ]集合中的任意内容,只要出现都替换为空格。
awk筛选出每行的特定字段,$5, $6, $9 $10 $11,打印出来并以空格分隔。
sort排序
uniq去重
结果保存到mk_RTDB-nef.tmp文件。
| 就是个管道符,把上一个命令的处理结果传递给下一个命令继续处理。
要知道每步的结果,可以一个个地尝试:
比如,先试试:
grep ^SERVER /SYSTEM//opf/absolute/lib/system_conf_mlt.txt
再试试:
grep ^SERVER /SYSTEM//opf/absolute/lib/system_conf_mlt.txt \
| sed 's/[{},="]/ /g'
再试试:
grep ^SERVER /SYSTEM//opf/absolute/lib/system_conf_mlt.txt \
| sed 's/[{},="]/ /g' \
| awk '{print $5 " " $6 " " $9 " " $10 " " $11}'
一步步地看输出结果是什么,对整个过程就了然于胸了。
4. shell脚本和批处理脚本有什么区别
简单来理解
两者都是命令的集合
shell脚本基于Linux/Unix命令
批处理脚本基于DOS(cmd)命令
5. Linux里面基本的shell脚本编写有哪些
shell脚本就是一些命令的集合。
举个例子,我想实现这样的操作:
1)进入到/tmp/目录;
2)列出当前目录中所有的文件名;
3)把所有当前的文件拷贝到/root/目录下;
4)删除当前目录下所有的文件。
简单的4步在shell窗口中需要你敲4次命令,按4次回车。这样是不是很麻烦?当然这4步操作非常简单,如果是更加复杂的命令设置需要几十次操作呢?那样的话一次一次敲键盘会很麻烦。所以不妨把所有的操作都记录到一个文档中,然后去调用文档中的命令,这样一步操作就可以完成。其实这个文档呢就是shell脚本了,只是这个shell脚本有它特殊的格式。《linux 就该这么学》
Shell脚本通常都是以.sh 为后缀名的,这个并不是说不带.sh这个脚本就不能执行,只是大家的一个习惯而已。所以,以后你发现了.sh为后缀的文件那么它一定会是一个shell脚本了。test.sh中第一行一定是 “#! /bin/bash” 它代表的意思是,该文件使用的是bash语法。如果不设置该行,那么你的shell脚本就不能被执行。’#’表示注释,在前面讲过的。后面跟一些该脚本的相关注释内容以及作者和创建日期或者版本等等。当然这些注释并非必须的,如果你懒的很,可以省略掉,但是笔者不建议省略。因为随着你工作时间的增加,你写的shell脚本也会越来越多,如果有一天你回头查看你写的某个脚本时,很有可能忘记该脚本是用来干什么的以及什么时候写的。所以写上注释是有必要的。另外系统管理员并非你一个,如果是其他管理员查看你的脚本,他看不懂岂不是很郁闷。该脚本再往下面则为要运行的命令了。
6. shell脚本是什么
当执行命令或程序语句是通过程序文件而不是命令行,那这个程序被称为Shell脚本。如果Shell脚本内置很多命令、语句及循环控制,然后一次性执行完毕,这种通过文件执行脚本的方式称为非交互方式。用户可以在Shell脚本中输入一系列命令及命令语句组合。这些命令、变量和流程控制语句等有机地结合在一起,就形成一个功能强大的Shell脚本。