Linux中的shell脚本/编程
文章平均质量分 72
紫颖
这个作者很懒,什么都没留下…
展开
-
*脚本技巧小节*
我们在写脚本的时候,会遇到各种各样的问题,一不留神就会跌坑,我们总结经验,吸取教训,总之就是为了避免再次踩雷~ 1。在while命令和管道符相结合时,系统会fork一个子进程来执行while命令。================================var=0echo 123 | while read linedo var=1 breakdon原创 2012-03-06 18:01:53 · 2036 阅读 · 0 评论 -
*非标准终端输入*
不晓得大家有没有见过这个的用法:就是非标准终端输入的~[oracle@99bill-as9 deploy]$ (echo . as.tomcat.env;echo tomcat status;echo echo "Deployment of the 1 step: stopping tomcatServer104-1";echo echo;echo sleep 1;echo echo原创 2011-12-30 13:27:34 · 3063 阅读 · 0 评论 -
@for...do...done 的数值处理@
除了上述的方法之外,for 回圈还有另外一种写法!语法如下:for (( 初始值;限制值;运行步阶))do 程序段done这种语法适合於数值方式的运算当中,在 for 后面的括号内的三串内容意义为:初始值:某个变量在回圈当中的起始值,直接以类似 i=1 配置好;限制值:当变量的值在这个限制值的范围内,就继续进行回圈。例如 i运行步阶:每作一次回圈时,变量的变原创 2011-09-13 18:00:27 · 4725 阅读 · 0 评论 -
整理应用信息列表
现在我有一些应用的列表信息,但是发现最后一列缺少了对应的ip,那么针对比较多的信息,我应该怎样添加呢手动的话,我肯定会疯的,那么我们就使用脚本吧~信息列表的内容如下格式:应用名 应用包名 实例 AS内容:app-sohu /usr/weblogicapp/sohu/app-ws-sohu.war sohuServer-150 99bill-as20思路:针对这么多主原创 2012-01-19 14:30:59 · 1236 阅读 · 2 评论 -
日志切割
#!/bin/bash# This script run at 00:00# The Nginx logs pathlogs_path="/usr/local/webserver/nginx/logs/"mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/mv ${logs转载 2011-11-16 11:50:39 · 1975 阅读 · 1 评论 -
@函数表达式的格式@
之前我们都接触了好几种条件判断语句,下面我们来总结一下:条件判断式:if [ 条件判断式 ]; then 当条件判断式成立时,可以进行的指令工作内容;fiif [ 条件判断式 ]; then 当条件判断式成立时,可以进行的指令工作内容;else 当条件判断式不成立时,可以进行的指令工作内容;fiif [ 条件判断原创 2011-10-18 11:08:09 · 1592 阅读 · 0 评论 -
@如何脚本实现ftp文件下载?@
我们知道,如果想要下载ftp上面的文件,可以登录上去,然后下载,但是如果要脚本化,应该如何实现呢?date=`date +%Y%m%d`export hostname=192.168.55.229export username=zyexport password=123456export localcd=/home/oracle/temp/${date}export f原创 2011-12-21 15:25:51 · 2561 阅读 · 0 评论 -
浅谈date
其实前面已经谈到过date,但是到目前为止,又发现了date的一些新的用法,拿来还大家分享一下:从图中我们可以发现当前时间是20110831,也就是说date --date="20110831" +%s和date +%s表示的是同一天,即:都是今天,那么究竟有何区别呢?从图中我们可以知道date --date="20110831" +%s表示的是今天凌晨也就是00::00:00,那么原创 2011-08-31 16:32:42 · 1195 阅读 · 3 评论 -
利用判断符号[ ]
除了我们很喜欢使用的 test 之外,其实,我们还可以利用判断符号『 [ ] 』(就是中括号啦) 来进行数据的判断呢! 举例来说,如果我想要知道 $HOME 这个变量是否为空的,可以这样做:[oracle@SOR_SYS]$ [ -z "$HOME" ] ; echo $?1使用中括号必须要特别注意,因为中括号用在很多地方,包括万用字节与正规表示法等等,所以如果要在 bash 的语法当原创 2011-08-23 16:23:29 · 3591 阅读 · 0 评论 -
@shell脚本中数组array常用技巧学习实践@
shell中数组的下标默认是从0开始的1。将字符串放在数组中,获取其长度#!/bin/bashstr="a b --n d"array=($str)length=${#array[@]}echo $lengthfor ((i=0; ido echo ${array[$i]}done执行结果:[oracle@99bill-as9 array]$原创 2011-09-15 16:56:58 · 35212 阅读 · 1 评论 -
**对输出格式中的空格处理**
#!/bin/sha=(" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ")TOMCAT_HOME=/opt/oracle/tomcatsprint_status(){echoecho "Processes in Instance: `hostna原创 2011-11-23 17:48:07 · 1479 阅读 · 0 评论 -
expect学习笔记及实例详解
因为最近正在学习expect脚本,但是发现网上好多文章都是转载的,觉得这篇文章还不错,所以简单修改之后拿过来和大家分享一下~ 1. expect是基于tcl演变而来的,所以很多语法和tcl类似,基本的语法如下所示:1.1 首行加上/usr/bin/expect1.2 spawn: 后面加上需要执行的shell命令,比如说spawn sudo touch testfile1.3 ex原创 2011-10-25 17:02:51 · 34189 阅读 · 3 评论 -
bash的基础用法,你注意到了吗?
${parameter##word} The word is expanded to produce a pattern just as in pathname expansion. If the pattern matches the beginning of the value of parameter, then the原创 2011-11-16 11:53:12 · 1327 阅读 · 0 评论 -
*exec,source和fork的区别*
exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source可以查看所有的内部命令信息。bash shell的命令分为两类:外部命令和内部命令。外部命令是通过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。在说明exec和sou原创 2011-10-20 17:54:03 · 4904 阅读 · 1 评论 -
Bash shell常见错误
Linux上默认的shell是GNU bash(Bourne Again shell),这是一种增强版的Bourne shell,其扩展的特性不仅表现在编程级别上也表现在交互使用时,用户可以对自己的工作环境进行裁剪,建立快捷键以提高工作效率。而我们下面要介绍的就是Bourne shell的常见错误。那么下面我们再介绍一下Bash shell常见的错误吧~原创 2012-02-07 10:31:56 · 3402 阅读 · 0 评论 -
*getopts的用法*
while getopts "d:n:a:s:h:j:"myopt ; do case $myopt in d) conffile=$OPTARG/conf/catalina.properties instanceName=`echo $OPTARG | awk -F/ '{print $NF}'` cp -rf /opt/oracle/tomcat/tomcatTemp原创 2012-02-15 17:25:15 · 1559 阅读 · 0 评论 -
9*9乘法表
方法一:#!/bin/bashdeclare -i i=1declare -i j=1declare -i count=10while [ $i -lt $count ];do for ((j=1;j<=$i;j++));do echo -ne "$j*$i=$(($j*$i))\t" if [ $j -eq $i ];then echo -e '\r' fi don原创 2012-05-07 11:07:38 · 5006 阅读 · 1 评论 -
Shell编程基础
写之前我们先来搞清楚为什么要学shell,学习要有目的性shell简单、灵活、高效,特别适合处理一些系统管理方面的小问题shell可以实现自动化管理,让系统管理员的工作变得容易、简单、高效shell脚本可移植性好,在unix/linux系统中可灵活移植,几乎不用任何设置就能正常运行shell脚本可轻松方便读取和修改源代码,不需要编译掌握shell可以帮你解决一些故障问题,比如脚原创 2011-07-24 21:48:13 · 46200 阅读 · 7 评论 -
linux shell 执行sql
在shell下执行oracle数据库的sql#### 函数#### 说 明:执行sql语句#### 输入参数:{sql语句}{数据库tns}{数据库用户名}{数据库用户密码}#### 输出参数:sql执行结果function exe_sql{sql=$1oracle_sid=$2user_name=$3user_pwd=$4error_code=`sqlplus转载 2012-05-08 09:35:20 · 13744 阅读 · 0 评论 -
*查看进程所消耗的内存*
#!/bin/shmem=`free -m | awk 'NR==2{print $2}'`ps -aux 2>&1 | sort -k 4 -r | awk '$4 ~ /^[0-9]/ && $4>0 {print $4,$11}' | awk '{print $1/100*mem" "$2}' mem=$mem | sort -k 2 | awk '{ a[$2] += $1转载 2012-04-20 11:07:50 · 3167 阅读 · 1 评论 -
如何在一台主机上监控其他几台主机的某一端口?--hadoop
Hadoopt是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的硬件上。而且它提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用原创 2011-11-25 10:49:23 · 2210 阅读 · 2 评论 -
@while+do。。。done和case。。。esac或者if。。。then。。fi的嵌套使用以及if的!判断@
(一)while do。。。done和case。。。esac嵌套使用 cpsDeploy_menu(){echo " --- CPS APP Menu--- "echo " help app command: getdeploy app_name "#echo "deploy $size $app_name "echo " Check app status:原创 2011-10-11 16:23:52 · 4201 阅读 · 4 评论 -
@简单脚本测试--date的一些用法@
cat data.sh#!/bin/bashecho "Today is `date +%Y%m%d`!"echo "Yesterday is `date --date='1 day ago' +%Y%m%d`!"echo "Yesterday is `date --date='1 days ago' +%Y%m%d`!"echo "Yesterday is `date原创 2011-08-15 22:46:23 · 4059 阅读 · 1 评论 -
*Innode使用率监控报警*
#!/bin/bash#mail:zhuying.jz.137@163.comusage(){cat Usage: Show the inode use percentage:'df -i'EOF}if [ $# -gt 0 ];thenusagefi###################################原创 2012-02-17 17:02:03 · 2222 阅读 · 1 评论 -
磁盘监控报警-nagios
#!/bin/sh#define alert devel of nagiosSTATE_OK=0STATE_WARNING=1STATE_CRITICAL=2STATE_UNKOWN=3above=0list=`df -h|grep -v "Filesystem"|grep -v "devfs"|awk '{print $6}'`for disk_name in $list;转载 2012-02-16 18:12:58 · 2544 阅读 · 0 评论 -
*参数传递*
(一)假如我们有个脚本monitor中的函数search调用searchfile.sh脚本中的searchlog函数,例如:截取searchfile.sh的一部分:searchlog(){ local searchas=$1 asinfo=(`getAsInfo $1`) local searchfile=$2 l原创 2012-02-07 18:08:11 · 1033 阅读 · 0 评论 -
*关于EOF--用户自定义的终止符*
想必大家都可能见过EOF这个用法,但是不知道你是否注意过细节呢?下面我们通过一个脚本menu来测试一下吧~#!/bin/bashprintf "Do you want to see the menu?"read answerif [[ $answer == "yes" ]]then cat << EOF 1)Steak and eggs原创 2012-02-06 17:22:37 · 4355 阅读 · 1 评论 -
*自动安装jdk的脚本--select用法*
#!/bin/bash#echo "You want to which kinds of means to install jdk:"select jdk in `ls *gz *bin`do echo "Your choice is $jdk" breakdoneecho "According to your chosen bag suffixes to choi原创 2011-11-02 18:31:10 · 1838 阅读 · 1 评论 -
在多台机器上自动安装软件
#! /bin/shwhile getopts f: OPT; docase $OPT inf|+f)files="$OPTARG $files";;*)echo "usage: `basename $0` [-f hostfile] "exit 2esacdoneshift `expr $OPTIND - 1`if [ "" = "$转载 2011-11-15 18:09:34 · 1607 阅读 · 1 评论 -
shell变量
在shell中有3种变量:系统变量,环境变量和用户变量,其中系统变量在对参数判断和命令返回值判断时会使用,环境变量主要是在程序运行时需要设置,用户变量在编程过程中使用量最多。1。系统变量常用的系统变量变量名 含义$# 命令行参数的个数$n $1表示第一个参数,$2表示第二个参数,以此类推原创 2011-07-25 20:56:12 · 11313 阅读 · 5 评论 -
shell expect的简单用法
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄、收藏。可是为什么要这么写却不知其然。本文用一个最短的例子说明脚本的原理。 脚本代码如下: ############################################## #!/usr/bin/expect set timeout 30 spawn ssh原创 2011-10-24 22:18:36 · 99975 阅读 · 7 评论 -
rm 删除文件到垃圾箱
#将下列的代码添加到用户下的.bashrc中,这样这段代码就可以发挥作用了。如果是在终端输入的那么输入代码后退出终端在打开终端,这段代码就生效了。有一部分是参照网上的代码。 #具体功能如下:#rm #rm -f#rm -r#rm -rf #rl 查看回收站的内容#rc 清空回收站#ur 后面加参数恢复回收站的文件到当前目录下mkdir -p ~/.trash转载 2011-10-24 22:44:45 · 2110 阅读 · 0 评论 -
*简单脚本测试--利用date进行文件的创建*
想像一个状况,假设我的服务器内有数据库,数据库每天的数据都不太一样,因此当我备份时, 希望将每天的数据都备份成不同的档名,这样才能够让旧的数据也能够保存下来不被覆盖。 哇!不同档名呢!这真困扰啊?难道要我每天去修改 script ?不需要啊!考虑每天的『日期』并不相同,所以我原创 2011-08-15 16:54:13 · 2176 阅读 · 2 评论 -
变量内容的删除、取代与替换---删除与取代
变量除了可以直接配置来修改原本的内容之外,有没有办法透过简单的动作来将变量的内容进行微调呢? 举例来说,进行变量内容的删除、取代与替换等!是可以的!我们可以透过几个简单的小步骤来进行变量内容的微调喔! 底下就来试试看!本小节我们主要介绍变量内容的删除变量的内容可以很简单的原创 2011-08-17 14:45:34 · 4368 阅读 · 5 评论 -
expect脚本
前几天在写脚本的时候我有一个功能是想切换用户,让他自动输入密码。我觉得shell脚本实现不了,于是就上网查询,发现expect脚本可以实现,但是一直没有试验,今天闲来没事就做一下测试。 1。首先确认expect的包要安置。[[zhuying@SOR_SYS opt原创 2011-08-03 15:30:13 · 45186 阅读 · 3 评论 -
回圈 (loop)--for...do...done (固定回圈)
除了 if...then...fi 这种条件判断式之外,回圈可能是程序当中最重要的一环了~回圈可以不断的运行某个程序段落,直到使用者配置的条件达成为止。 所以,重点是那个『条件的达成』是什么。除了这种依据判断式达成与否的不定回圈之外, 还有另外一种已经固定要跑多少次的回圈形态原创 2011-09-08 16:38:20 · 2666 阅读 · 0 评论 -
回圈 (loop)--while do done, until do done (不定回圈)
除了 if...then...fi 这种条件判断式之外,回圈可能是程序当中最重要的一环了~回圈可以不断的运行某个程序段落,直到使用者配置的条件达成为止。 所以,重点是那个『条件的达成』是什么。除了这种依据判断式达成与否的不定回圈之外, 还有另外一种已经固定要跑多少次的回圈形态原创 2011-09-08 16:33:50 · 4823 阅读 · 0 评论 -
shift:造成参数变量号码偏移
脚本后面所接的变量是否能够进行偏移 (shift) 呢?什么是偏移啊?我们直接以底下的范例来说明好了, 用范例说明比较好解释!#!/bin/bashecho "Total parameter number is ==> $#"echo "Your whole para原创 2011-08-30 14:17:21 · 1327 阅读 · 1 评论 -
修改主机名/添加用户名和密码/挂载目录等多功能脚本
该脚本的主要目的就是:修改主机名,添加用户名和密码并且挂载目录的脚本。#!/bin/bash#Add the hostnameread -p "Please input your hostname:" Hostnamehostname $Hostname 【必须原创 2011-08-02 10:08:57 · 2659 阅读 · 2 评论 -
Tomcat创建实例的一个脚本(shell 脚本)
#!/bin/bashtc_home=/opt/oracle/tomcat/instanceName=$1 【创建的实例】 cd .. >> /dev/nulltemplate_dir=`pwd`echo $template_dirif [ ! -d $tc_home ] ;th原创 2011-07-14 15:34:56 · 1739 阅读 · 0 评论