Shell脚本的书写

Shell脚本的书写
Shell脚本的书写

Shell脚本的书写

#!/sbin/sh 表示使用Bourne Shell来解释该Shell脚本

$1、$2、$3 依次为参数para1、para2、para3

$#参数的个数

$@所有的参数

$? 标识返回值

$0敲入命令

如:alias ll=”ls -l”则建立别名ll

例子:

1.

#!/bin/sh

#判断变量是否相符

if

name=zhn

[ $name = "abc" ]

echo $?

then

name=abc

[ $name = "abc" ]

echo $?

fi

2.

#!/bin/sh

#参数的设置

case $1 in

start)

if [ -f /etc/passwd ];then

echo "passwd exists"

fi;;

stop)

if [ -d /export ];then

echo "export exists"

echo `date|cut -c12-13`

fi;;

*)

echo "please enter start|stop"

;;

esac

3.

#!/bin/sh

#从时间命令中提取小时,判断上午,下午晚上

if [ -f $HOME ]

then

echo "find if"

fi

hour=`date |cut -c12-13`

echo $hour

case "$hour" in

0?|1[01])

echo "good mornig";;

1[2-7])

echo "good afternoon";;

*)

echo "good evening";;

esac

注意:1.为了区别变量和其它字符串,变量周围必须至少有一个空格,如[ $HOME = “ABC” ]中间就有空格来分隔。

test command 等价于[ ]

2.结构

○1.

if test ;then

command;

else ;command

fi

○2

case "$hour" in

value1 )

command1;;

value2 )

command2;;

*)

command3;;

esac

3.这里“”表示里边可以有命

‘’表示里边的字符均用字符串表示

` `用于标识命令

例如#echo “date”$ 显示2003-7-23 $

#echo ‘date’$ 显示date$,说明这里date当作字符串来处理

#echo `date`$

4.这里; 表示一行命令的结束

;; 表示跳出循环

5.exit(1) 表示强制退出

exit(0) 表示正常退出

6.这里有多种脚本可以选择

/bin/sh Bourne Shell

/bin/ksh Korn Shell

/bin/csh C Shell

Bash Shell可记录以前命令的Shell

7、-f 表示test是否为文件

-d 表示test是否为目录

linux+shell脚本语言基础知识

linux shell脚本语言基础知识 一.shell简介 Linux系统的shell作为操作系统的外壳,为用户提供使用操作系统的界面,更确切的说,shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用Shell脚本编程,完成更加复杂的操作。 shell是一个命令解释器,它从输入设备读取命令,再将其转为计算机可以了解的指令,然后执行它。在linux中,shell又不仅是简单的命令解释器,而且是一个全功能的编程环境。 Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell (/usr/bin/ksh)、Shell for Root(/sbin/sh),等等。不同的Shell语言的语法有所不同,所以不能交换使用。每种Shell都有其特色之处,基本上,掌握其中任何一种就足够了。通常用Bash,也就是Bourne Again Shell进行编程。 二.shell使用 1.建立和运行shell程序 shell脚本程序:按照一定的语法结构把若干linux命令组织在一起,是这些命令按照我们的要求完成一定的功能。它可以进行类似程序的编写,并且不需要编译就能执行。(只需修改其权限) 像编写高级语言的程序一样,编写shell程序需要一个文本编辑器,如VI和VIM,通常使用VIM文本编辑器,支持更便利的插入模式。 首先使用VIM编辑器编辑一个hello.sh文件: #!/bin/bash #hello world example

Shell 经典实例

Thizlinux 系统教程 Shell 经典实例 ----------------Milo 经典小shell 1 列目录树的shell 脚本如下: #!/bin/sh # dtree: Usage: dtree [any directory] dir=${1:-.} (cd $dir; pwd) find $dir -type d -print | sort -f | sed -e "s,^$1,," -e "/^$/d" -e "s,[^/]*/([^/]*)$,`----1," -e "s,[^/]*/,| ,g" 2 while中使用read (file是一个文件) cat file | while read line do echo $line echo " :: Please input any key(s):c" str4read="" while true do chr4read=`dd if=/dev/tty bs=1 count=1 2>/dev/null` str4read=$str4read$chr4read if [ "$chr4read" = "" ] ;then break; fi

done echo " :: |$str4read|" done 3 将多个空格替换为字符 sed 's/[ ][ ]*/ /g' 如果空格与tab共存时用 sed -e 's/[[:space:]][[:space:]]*/ /g' filename 4用脚本实现分割文件 #!/bin/bash if [ $# -ne 2 ]; then echo 'Usage: split file size(in bytes)' exit fi file=$1 size=$2 if [ ! -f $file ]; then echo "$file doesn't exist" exit fi

Linux实验项目四--shell编程

实验项目四shell编程 一、实验目的 (1)了解shell的作用和主要分类; (2)掌握bash的建立和执行方式; (3)掌握bash的基本语法; (4)学会编写shell脚本。 二、实验内容 (1)shell脚本的建立和执行; (2)历史命令和别名定义; (3)shell变量和位置参数、环境变量; (4)bash的特殊字符; (5)一般控制结构; (6)算术运算及bash函数。 三.实验软件 VMWare Workstation 5.0; Red hat linux 9.0; 四.实验主要步骤 1、利用vi建立一个脚本文件,其中包括date,cal,pwd,ls等常用命令。然后以不同方式执行脚本。 2、运行history命令,配置历史命令环境。 3、体会bash的命令补齐功能。 4、用alias定义别名,然后执行。 5、编辑如下脚本进行执行: 6、编写一个shell脚本,求斐波那契数列的前10项及总和。 7、设计一个程序cuts,它由标准输入读取数据,获取由第一个参数n和第二个参数m所限定范围的数据,n和m都是整数,即从输入的字符串中抽取第n个字符至第m个字符之间的所有字符(包括这两个字符)。例如: $cuts 11 14 tis is a test of cuts program (输入) tst(显示结果

五.实验结果 1、利用vi建立一个脚本文件,其中包括date,cal,pwd,ls等常用命令。然后以不同方式执行脚本。 2、运行history命令,配置历史命令环境。 3、体会bash的命令补齐功能。 双击tab键,能列出所有符合条件的结果,只有唯一结果时单击可补全。 4、用alias定义别 名,然后执行。 5、编辑如下脚本进行执行:

linux脚本实例

1.写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。 #!/bin/sh unset var while [ "$var" != "end" ] do echo -n "please input a number: " read var if [ "$var" = "end" ] then break fi echo "var is $var" done 2.写一个脚本,可以根据参数文件名,以正确的参数调用tar来解压缩tar.gz或tar.bz2文件。 #!/bin/sh case ${1##*.tar.} in bz2) tar jxvf $1 ;; gz) tar zxvf $1 ;; *) echo "wrong file type" esac 3.写一个脚本以方便用户查询rpm的相关信息。这个脚本首先提示用户选择查询依据,比如文件名,包名,全部等。然后提示用户选择查询信息,比如包名,包里所包含的所有文件,包的信息等。然后询问是否继续查询,是则循环刚才的过程,否则退出。 #!/bin/sh RPM=/bin/rpm option="-q" while true do echo "what to query?" select var in "All" "file" "package name" do case $var in All) option=$option"a" break ;; file) echo -n "please input file name: "

shell 脚本入门笔记

#!/bin/bash 放在第一行用于告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell。文件保存为**.sh。 执行方式: 1.chmod777 test.sh ./test.sh 2./bin/sh test.sh echo 用于向窗口输出文本 定义变量时,变量名不加$符号。 例如:your_name="https://www.360docs.net/doc/cd15007558.html," 还可以使用语句进行赋值: for file in `ls /etc` 或 for file in $(ls /etc) 以上语句将/etc 下目录的文件名循环出来。 使用变量 使用一个定义过的变量,只要在变量名前面加美元符号即可,如: your_name="qinjx"

echo $your_name echo ${your_name} 变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,建议给所有变量加上花括号。 只读变量 readonly+变量名 删除变量 unset+变量名不能删除只读变量 Shell 字符串 字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP 类似。 单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。 双引号 your_name='qinjx'

str="Hello, I know you are \"$your_name\"! \n" 双引号的优点: 双引号里可以有变量 双引号里可以出现转义字符 拼接字符串 your_name="qinjx" greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 获取字符串长度 string="abcd" echo ${#string} 输出4 提取子字符串 以下实例从字符串第2 个字符开始截取4 个字符:string="runoob is a great site" echo ${string:1:4} 输出unoo 查找子字符串

经典shell 脚本实例

Linux shell 脚本实例 1. 写一个脚本,利用循环计算10的阶乘#!/bin/sh factorial=1 for a in `seq 1 10` do factorial=`expr $factorial \* $a` done echo "10! = $factorial" 2. 写一个脚本,执行后,打印一行提示“Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值。直到用户输入"end"停止。#!/bin/sh unset var while [ "$var" != "end" ] do echo -n "please input a number: " read var if [ "$var" = "end" ] then break fi echo "var is $var" done ////////////////////////////////////////// #!/bin/sh unset var while [ "$var" != "end" ] do echo -n "please input a number: " read var if [ "$var" = "end" ] then break fi echo "var is $var" done 3. 写一个脚本,利用循环和continue关键字,计算100以内能被3整除的数之和 4.一个函数,利用shift计算所有参数乘积,假设参数均为整数 #! /bin/sh result=1 while [ $# -gt 0 ] do result=`expr $result * $1` shift done echo $result 5.写一个脚本,可以根据参数文件名,以正确的参数调用tar来解压缩tar.gz或tar.bz2文件。#!/bin/shcase ${1##*.tar.} in bz2) tar jxvf $1 ;; gz) tar zxvf $1 ;; *) echo "wrong file type"esac6.写一个脚本以方便用户查询rpm的相关信息。这个脚本首先提示用户选择查询依据,比如文件名,包名,全部等。然后提示用户选择查询信息,比如包名,包里所包含的所有文件,包的信息等。然后询问是否继续查询,是则循环刚才的过程,否则退出。

Shell脚本编写基础

Shell本身是一个用C语言编写的程序,它是用户使用Linux的桥梁。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。它虽然不是Linux系统核心的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell 是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Linux系统的关键。可以说,shell使用的熟练程度反映了用户对Linux使用的熟练程度。 一、什么是shell 当一个用户登录Linux系统之后,系统初始化程序init就为每一个用户运行一个称为shel l(外壳)的程序。那么,shell是什么呢?确切一点说,shell就是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用shell 来启动、挂起、停止甚至是编写一些程序。 当用户使用Linux时是通过命令来完成所需工作的。一个命令就是用户和shell之间对话的一个基本单位,它是由多个字符组成并以换行结束的字符串。shell解释用户输入的命令,就象DOS里的https://www.360docs.net/doc/cd15007558.html,所做的一样,所不同的是,在DOS中,https://www.360docs.net/doc/cd15007558.html,只有一个,而在Linux下比较流行的shell有好几个,每个shell都各有千秋。一般的Linux系统都将bash作为默认的shell。 二、几种流行的shell 目前流行的shell有ash、bash、ksh、csh、zsh等,你可以用下面的命令来查看你自己的shell类型: #echo $SHELL $SHELL是一个环境变量,它记录用户所使用的shell类型。你可以用命令: #shell-name 来转换到别的shell,这里shell-name是你想要尝试使用的shell的名称,如ash等。这个命令为用户又启动了一个shell,这个shell在最初登录的那个shell之后,称为下级的shell或子shell。使用命令: $exit 可以退出这个子shell。 使用不同的shell的原因在于它们各自都有自己的特点,下面作一个简单的介绍: 1.ash ash shell是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。 2.bash bash是Linux系统默认使用的shell,它由Brian Fox和Chet Ramey共同完成,是Bourne Again Shell的缩写,内部命令一共有40个。Linux使用它作为默认的shell是因为它有诸如以下的特色: (1)可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。 (2)自动通过查找匹配的方式给出以某字符串开头的命令。 (3)包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。 3.ksh ksh是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了。 4.csh

常用shell脚本

如何用脚本实现分割文件 #!/bin/bash if [ $# -ne 2 ]; then echo 'Usage: split file size(in bytes)' exit fi file=$1 size=$2 if [ ! -f $file ]; then echo "$file doesn't exist" exit fi #TODO: test if $size is a valid integer filesize=`/bin/ls -l $file | awk '{print $5}'` echo filesize: $filesize let pieces=$filesize/$size let remain=$filesize-$pieces*$size if [ $remain -gt 0 ]; then let pieces=$pieces+1 fi echo pieces: $pieces i=0 while [ $i -lt $pieces ]; do echo split: $file.$i: dd if=$file of=$file.$i bs=$size count=1 skip=$i let i=$i+1 done echo "#!/bin/bash" >; merge echo "i=0" >;>; merge echo "while [ $i -lt $pieces ];" >;>; merge echo "do" >;>; merge echo " echo merge: $file.$i" >;>; merge echo " if [ ! -f $file.$i ]; then" >;>; merge echo " echo merge: $file.$i missed" >;>; merge

利用shell脚本做可执行安装程序

利用shell脚本制作可执行安装程序 制作简单的安装包的时候可以简单的用cat命令连接两个文件,然后头部是脚本文件,执行的时候把下面的文件分解出来就行了。一般这个后部分的文件是个压缩包,那样,就能够打包很多文件了,在脚本中解压出来即可。这就是Linux那些bin、run等安装脚本的简单制作了。 如在linux 下制作二进制 .bin 文件的制做方法:就是使用cat 命令将执行脚本和打包文件同时放到一个.bin的文件里。这样安装的时候只要使用一个包,直接执行该包即可安装完毕,简单方便。 下例就是一名为install.sh脚本,它实现以下功能: ●自动创建用户及用户组 ●自动检查网络环境并安装环境包所需要的支撑环境 ●显示安装进度 ●自动检查并配置防火墙 ●自动安装环境包 ●自动增加自启动脚本 1.bin文件制作步骤 a)打包文件 tar cvf myapp-env-1.0-linux-x64-installer.tar.gz myapp-env-1.0-linux-x64-installer.tar b)编写脚本 内容见《install.sh脚本内容》节 c)可执行安装程序制作方法 # cat install.sh myapp-env-1.0-linux-x64-installer.tar.gz > myapp-env-1.0-linux-x64-installer.bin 这样就生成myapp-env-1.0-linux-x64-installer.bin的安装文件,该文件是由shell脚本和二进制合成的。前半部分是脚本后半部分是二进制文件,用strings等二进制查看命令可以看到。 2.安装 chmod 755 myapp-env-1.0-linux-x64-installer.bin ./ myapp-env-1.0-linux-x64-installer.bin 3.install.sh脚本内容

Shell脚本编程详解-吐血共享

第12章 Shell 脚本编程 ● Shell 命令行的运行 ● 编写、修改权限和执行Shell 程序的步骤 ● 在Shell 程序中使用参数和变量 ● 表达式比较、循环结构语句和条件结构语句 ● 在Shell 程序中使用函数和调用其他Shell 程序 12-1 Shell 命令行书写规则 ◆ Shell 命令行的书写规则 对Shell 命令行基本功能的理解有助于编写更好的Shell 程序,在执行Shell 命令时多个命令可以在一个命令行上运行,但此时要使用分号(;)分隔命令,例如: [root@localhost root]# ls a* -l;free;df 长Shell 命令行可以使用反斜线字符(\)在命令行上扩充,例如: [root@localhost root]# echo “ this is \ >long command ” This is long command 注意: “>”符号是自动产生的,而不是输入的。 12-2 编写/修改权限及执行Shell 程序的步骤 ◆ 编写Shell 程序 ◆ 执行Shell 程序 Shell 程序有很多类似C 语言和其他程序设计语言的特征,但是又没有程序语言那样复杂。Shell 程序是指放在一个文件中的一系列Linux 命令和实用程序。在执行的时候,通过Linux 操作系统一个接一个地解释和执行每条命令。首先,来编写第一个Shell 程序,从中学习Shell 程序的编写、修改权限、执行过程。

12-2-1 编辑Shell程序 编辑一个内容如下的源程序,保存文件名为date,可将其存放在目录/bin下。 [root@localhost bin]#vi date #! /bin/sh echo “Mr.$USER,Today is:” echo &date “+%B%d%A” echo “Wish you a lucky day !” 注意: #! /bin/sh通知采用Bash解释。如果在echo语句中执行Shell命令date,则需要在date 命令前加符号“&”,其中%B%d%A为输入格式控制符。 12-2-2 建立可执行程序 编辑完该文件之后不能立即执行该文件,需给文件设置可执行程序权限。使用如下命令。[root@localhost bin]#chmod +x date 12-2-3 执行Shell程序 执行Shell程序有下面三种方法: 方法一: [root@localhost bin]#./ date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法二: 另一种执行date的方法就是把它作为一个参数传递给Shell命令: [root@localhost bin]# Bash date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day ! 方法三: 为了在任何目录都可以编译和执行Shell所编写的程序,即把/bin的这个目录添加到整个环境变量中。 具体操作如下: [root@localhost root]#export PATH=/bin:$PATH [root@localhost bin]# date Mr.root,Today is: 二月 06 星期二 Wish you a lucky day !

shell脚本练习题

shell脚本例子集锦(习题总结) 练习一:写一个脚本 1.设定变量FILE的值为/etc/passwd 2.依次向/etc/passwd中的每个用户问好,并且说出对方的ID是什么 形如:(提示:LINE=`wc -l /etc/passwd | cut -d" " -f1`) Hello,root,your UID is 0. 3.统计一个有多少个用户 答案一:#!/bin/bash file="/etc/passwd" LINES=`wc -l $file | cut -d" " -f1` for I in `seq 1 $LINES`;do userid=`head -$I $file | tail -1 |cut -d: -f3` username=`head -$I $file | tail -1 |cut -d: -f1` echo "hello $username,your UID is $userid" done echo "there are $LINES users" 答案二:#!/bin/bash file=/etc/passwd let num=0 for I in `cat $file`;do username=`echo "$I" | cut -d: -f1` userid=`echo "$I" | cut -d: -f3` echo "Hello,$username,your UID is $userid" num=$[$num+1] done echo "there are $num users" 练习二:写一个脚本 1.切换工作目录至/var 2.依次向/var目录中的每个文件或子目录问好,形如: (提示:for FILE in /var/*;或for FILE in `ls /var`;) Hello,log 3.统计/var目录下共有多个文件,并显示出来 答案:#!/bin/bash cd /var let num=0 for I in `ls /var/*`;do echo "hello $I" num=$[$num+1] done echo "the number of files is $num" 练习三:写一个脚本 1.设定变量file的值为/etc/passwd

Shell脚本-Demo-29例

【例子:001】判断输入为数字,字符或其他 1.#!/bin/bash 2.read -p "Enter a number or string here:" input 3.case $input in 4. [0-9]) echo -e "Good job, Your input is a numberic! \n" ;; 5.[a-zA-Z]) echo -e "Good job, Your input is a character! \n" ;; 6. *) echo -e "Your input is wrong, input again! \n" ;; 7.esac 【例子:002】求平均数 1.#!/bin/bash 2.# Calculate the average of a series of numbers. 3.SCORE="0" 4.AVERAGE="0" 5.SUM="0" 6.NUM="0" 7.while true; do 8. echo -n "Enter your score [0-100%] ('q' for quit): "; read SCORE; 9. if (("$SCORE" < "0")) || (("$SCORE" > "100")); then 10. echo "Be serious. Common, try again: " 11. elif [ "$SCORE" == "q" ]; then 12. echo "Average rating: $AVERAGE%." 13. break 14. else 15. SUM=$[$SUM + $SCORE] 16. NUM=$[$NUM + 1] 17. AVERAGE=$[$SUM / $NUM] 18. fi 19.done 20.echo "Exiting." 【例子:003】自减输出 1.[scriptname: doit.sh] 2.while (( $# > 0 )) 3.do 4. echo $* 5. shift 6.done 7./> ./doit.sh a b c d e 8. a b c d e 9. b c d e 10.c d e

实验十三 shell脚本练习

上机实验内容: 1、请编写一个脚本,其功能是将当前用户的根目录下的work目录打包为名为“user’s-workdir-in-YYMMDD”的tar包(提示:参考用date建立文件) 要求:i)若该目录不存在,显示“dir not exist” ii)若该文件不是目录类型,显示“work is a type”,此处的type为文件类型 #!/bin/bash [ -e /work ] && tar -cvf "User's-workdir-in-`date +%Y%m%d`.tar" /work || echo "dir not exist" declare filetype="" [ -f /work ] && filetype="常规文件" [ -d /work ] && filetype="目录文件" [ -b /work ] && filetype="块设备文件" [ -c /work ] && filetype="字符设备" [ -S /work ] && filetype="套接字文件" [ -p /work ] && filetype="FIFO(管道)文件" [ -L /work ] && filetype="连接文件" [ "$filetype" != "" ] && echo "work is a $filetype" 2、编写一个脚本,其中包含一个打印函数,用于将多次输入的字符组合为一个字符串 要求:i)使用函数实现新值的输出 ii)使用循环语句完成多个字符的输入,直到输入字符串EOF才完成字符串的累加#!/bin/bash function add(){ str="$str"$input echo $str } read -p "请输入一个字符串或者输入EOF结束本次操作:" input declare str while [ "$input" != "EOF" ] do add read -p "请输入一个字符串或者输入EOF结束本次操作" input done 3、自我练习:设计一个运算器,实现“加、减、乘、除”功能。 (四则运算:符号使用+、-、*、/) #!/bin/bash

LinuxShell脚本编程实例

#! /bin/sh echo "Current command is $0" echo "The first parameter is $1" echo "The second parameter is $2" echo "The third parameter is $3" echo "Total of parameters if $#" echo "Current PID is $$" #!/bin/bash times=0 until [ "$times" = 3 ]; do echo "I love linux." sleep 2 times=`expr $times + 1` done #!/bin/bash # menu shell script. samli 2004.4.19 until echo "List Directory..........1" echo "Change Directory........2" echo "Edit File...............3" echo "Remove File.............4" echo "Exit Menu...............5" read choice test $choice = 5 do case $choice in 1) ls;; 2) echo "enter target directory:" read dir cd $dir ;; 3) echo "enter file name:" read file vi $file ;; 4) echo "enter file name:" read file rm $file ;; 5) echo "Goodbye"

常用shell脚本指令

常用shell脚本命令 1、显示包含文字aaa的下一行的内容: sed -n '/aaa/{n;p;}' filename 2、删除当前行与下一行的内容: sed -i '/aaa/{N;d;}' filename 3、删除当前行与下两行的内容: sed -i '/aaa/{N;N;d;}' filename 依次类推,删除三行,则为{N;N;N;d;},分析知:N为next 4、得出以空格为分割的字符串中单词的个数,即统计个数: awk ' { print NF } ' 如显示字符串VALUE中的单词个数,其中VALUE为:aaa bbb ccc ddd ee f 则执行 echo $VALUE | awk ' { print NF } ' 后的结果为6 5、在linux中建立一个文件与另一文件的链接,即符号链接 ln -s /var/named/chroot/etc/named.conf named.conf 这要就建立了当前目录的文件named.conf对/var/named/chroot/etc/named.conf 的符号链接。即操作named.conf就意味着操作实际文件/var/named/chroot/etc/named.conf ,这时用ll命令查看的结果如: lrwxrwxrwx 1 root root 32 Mar 22 12:29 named.conf -> /var/named/chroot/etc/named.conf 注意:当用sed来通过named.conf来删除一部分信息时,会将符号链接的关系丢掉,即会将named.conf变成一个实际文件。所以需对实际文件进行删除操作。 6、显示指定字符范围内的内容: 如:显示文件test.txt中字符#test begin与#test end之间所有的字符 sed -n "/#test begin/,/#test end/p" test.txt 或 awk "/#test begin/,/#test end/" test.txt 在日常系统管理工作中,需要编写脚本来完成特定的功能,编写shell脚本是一个基本功了!在编写的过程中,掌握一些常用的技巧和语法就可以完成大部分功能了,也就是2/8原则. 1. 单引号和双引号的区别 单引号与双引号的最大不同在于双引号仍然可以引用变量的内容,但单引号内仅是普通字符,不会作变量的引用,直接输出字符窜。请看如下例子: [root@linux ~]# name=HaHa [root@linux ~]# echo $name HaHa [root@linux ~]# myname="$name is wow" [root@linux ~]# echo $myname HaHa is wow [root@linux ~]# myname='$name is wow'

shell脚本之前的基础知识

第十二章学习shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员。目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目。有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富。笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要不断的练习,只要你shell脚本写的好,相信你的linux求职路就会轻松的多。笔者在这一章中并不会多么详细的介绍shell脚本,而只是带你进入shell脚本的世界,如果你很感兴趣那么请到网上下载相关的资料或者到书店购买相关书籍吧。 在学习shell 脚本之前,需要你了解很多关于shell的知识,这些知识是编写shell脚本的基础,所以希望你能够熟练的掌握。 【什么是shell】 简单点理解,就是系统跟计算机硬件交互时使用的中间介质,它只是系统的一个工具。实际上,在shell和计算机硬件之间还有一层东西那就是系统内核了。打个比方,如果把计算机硬件比作一个人的躯体,而系统内核则是人的大脑,至于shell,把它比作人的五官似乎更加贴切些。回到计算机上来,用户直接面对的不是计算机硬件而是shell,用户把指令告诉shell,然后shell再传输给系统内核,接着内核再去支配计算机硬件去执行各种操作。 笔者接触的linux发布版本(Redhat/CentOS)系统默认安装的shell叫做bash,即Bourne Again Shell,它是sh(Bourne Shell)的增强版本。Bourn Shell 是最早行起来的一个shell,创始人叫Steven Bourne,为了纪念他所以叫做Bourn Shell,检称sh。那么这个bash有什么特点呢? 1)记录命令历史 我们敲过的命令,linux是会有记录的,预设可以记录1000条历史命令。这些命令保存在用户的家目录中的.bash_history文件中。有一点需要你知道的是,只有当用户正常退出当前shell时,在当前shell中运行的命令才会保存至.bash_history文件中。 与命令历史有关的有一个有意思的字符那就是”!”了。常用的有这么几个应用:(1)!! (连续两个”!”),表示执行上一条指令;(2)!n(这里的n是数字),表示执行命令历史中第n条指令,例如”!100”表示执行命令历史中第100个命令;(3)!字符串(字符串大于等于1),例如!ta,表示执行命令历史中最近一次以ta为开头的指令。

Linux常用的系统监控shell脚本

https://www.360docs.net/doc/cd15007558.html,下面是我常用的几个Linux系统监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助。 1、查看主机网卡流量 1.#!/bin/bash 2. 3.#network 4. 5.#Mike.Xu 6. 7.while : ; do 8. 9.time=’date +%m”-”%d” “%k”:”%M’ 10. 11.day=’date +%m”-”%d’ 12. 13.rx_before=’ifconfig eth0|sed -n “8″p|awk ‘{print $2}’|cut -c7-’ 14. 15.tx_before=’ifconfig eth0|sed -n “8″p|awk ‘{print $6}’|cut -c7-’ 16. 17.sleep 2 18. 19.rx_after=’ifconfig eth0|sed -n “8″p|awk ‘{print $2}’|cut -c7-’ 20. 21.tx_after=’ifconfig eth0|sed -n “8″p|awk ‘{print $6}’|cut -c7-’ 22. 23.rx_result=$[(rx_after-rx_before)/256] 24. 25.tx_result=$[(tx_after-tx_before)/256] 26. 27.echo “$time Now_In_Speed: “$rx_result”kbps Now_OUt_Speed: “$tx_result”kbps” 28. 29.sleep 2 30. 31.done 2、系统状况监控 1.#!/bin/sh 2. 3.#systemstat.sh

linux Shell(脚本)编程入门 实例讲解详解

linux Shell(脚本)编程入门实例讲解详解 为什么要进行shell编程 在Linux系统中,虽然有各种各样的图形化接口工具,但是sell仍然是一个非常灵活的工具。Shell不仅仅是命令的收集,而且是一门非常棒的编程语言。您可以通过使用shell使大量的任务自动化,shell特别擅长系统管理任务,尤其适合那些易用性、可维护性和便携性比效率更重要的任务。 下面,让我们一起来看看shell是如何工作的: 建立一个脚本 Linux中有好多中不同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在bash 的大姐,bourne shell中运行)。 如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、vi等来编写我们的shell程序。程序必须以下面的行开始(必须方在文件的第一行): 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 要使脚本可执行: 然后,您可以通过输入: ./filename 来执行您的脚本。 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。 变量 在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:

Shell脚本例子集合

# vi xx.sh 退出并保存 # chmod +x xx.sh # ./xx.sh -2.调试脚本的方法 # bash -x xx.sh就可以调试了. -1.配置secureCRT的设置(我用的是6.2.3 build313版本,汉化版) 选项->会话选项(S)...->终端->仿真->终端(T)->把VT100改成Xterm->点中ANSI 颜色(A)和使用颜色方案(U)复选框. 这样就有颜色显示了. 选项->会话选项(S)...->终端->外观->字符编码(H)->从Default变到UTF-8. 这样就有中文显示了. 1.写一个脚本,执行后,打印一行提示"Please input a number:",要求用户输入数值,然后打印出该数值,然后再次要求用户输入数值.直到用户输入"end"停止. # vi show_var.sh 脚本内容: #!/bin/bash unset var while [ "$var" != "end" ] do echo -n "please input a number: " read var if [ "$var" = "end" ] then break fi echo "var is $var" done 命令保存后退出,并执行: # chmod +x show_var.sh # ./show_var.sh please input a number: 1 var is 1 please input a number: s var is s please input a number: end # 2.写一个脚本,测试位置参数

个人整理shell脚本编程笔记

shell脚本编程学习笔记(一) 一、脚本格式 vim shell.sh #!/bin/bash//声明脚本解释器,这个‘#’号不是注释,其余是注释 #Program://程序内容说明 #History://时间和作者 二、shell变量的种类 用户自定义变量:由用户自己定义、修改和使用 与定义变量:Bash与定义的特殊变量,不能直接修改 位置变量:通过命令行给程序传递执行的参数 1、定义变量: 变量名要以英文字母或下划线开头,区分大小写。 格式:变量名=值 输出变量:echo $变量名 2、键盘输入为变量内容: 格式:read [-p "信息"] 变量名 如:read -p "pewase input your name:" name 3、不同引号对变量的作用 双引号"":可解析变量,$符号为变量前缀。 单引号'':不解析变量,$为普通字符。 反引号``:将命令执行的结果输出给变量。 三、shell条件测试 1、test命令: 用途:测试特定的表达式是否成立,当条件成立时,命令执行后的返回值为0,否则为其他数字。 格式:test 条件表达式[ 条件表达式] (注意:[]与表达式之间存在空格) 2、常见的测试类型: 测试文件状态 格式:[ 操作符文件或目录] 如:if [ -d /etc ] then echo "exists" else echo "not exists" fi 常见的测试操作符: -d:测试是否为目录 -e:测试目录或文件是否存在 -f:测试是否为文件 -r:测试当前用户是否有读权限 -w:测试当前用户是否有写权限 -x:测试当前用户是否有执行权限

相关文档
最新文档