介绍shell脚本

简单的说shell就是一个包含若干行Shell或者Linux命令的文件。对于一次编写,多次使用的大量命令,就可以使用单独的文件保存下来,

以便日后使用。通常shell脚本以.sh为后缀。在编写shell时,第一行一定要指明系统需要哪种shell解释用户的shell程序,如:#!/bin/sh,#!/bin/bash,#!/bin/csh,,#!/bin/tcsh和,#!/bin/ksh等。下面的run.sh则指明使用bash执行。

#!bin/bash

通常,shell脚本会以#!/bin/sh作为默认的shell程序

执行shell的方式有两种

第一种是为shell脚本加上可执行权限并执行,

//为shell脚本直接加上可执行权限并执行

         chmod 755 run.sh

          ./run.sh

第二种是通过sh命令执行shell脚本,例如执行当前目录下的run.sh脚本,命令如下:

//通过sh命令执行shell脚本

     sh run.sh

注意:那为何『 sh shell.sh 』也可以运行呢?

这是因为 /bin/sh 其实就是 /bin/bash(连结档),使用 sh shell.sh 亦即告诉系统,我想要直接以 bash 的功能来运行 shell.sh 这个文件内的相关命令的意思,所以此时你的 shell.sh 只要有 r 的权限即可被运行喔!而我们也可以利用 sh 的参数,如 -n 及 -x 来检查与追踪 shell.sh 的语法是否正确呢

2。输入输出重定向

Linux使用标准输入stdin和标准输出stdout,来表示每个命令的输入和输出,还使用一个标准错误输出stderr用于输出错误信息。

这三个标准输入输出系统默认与控制终端设备相联系在一起的。因此,在标准情况下,每个命令通常从它的控制终端中获取输入,将输出打印到控制终端的屏幕上。

但是可以重新定义程序的输入stdin和输出stdout,将它们重定向。最基本的方法就是将它们重定义到一个文件上去,从一个文件获取输入/输出到另外的文件中等。

2.1输入重定向

输入重定向使用小于号“<”可以实现。显示文件的cat命令就是将标准输入重定向到文件实现的。

//将/etc/fstab作为输入,重定向到cat命令

# cat /etc/fstab

  1. LABEL=/                 /                       ext3    defaults        1 1
  2. LABEL=/boot             /boot                   ext3    defaults        1 2
  3. none                    /dev/pts                devpts  gid=5,mode=620  0 0
  4. none                    /proc                   proc    defaults        0 0
  5. none                    /dev/shm                tmpfs   defaults        0 0
  6. /dev/hda3               swap                    swap    defaults        0 0
  7. /dev/cdrom              /mnt/cdrom              udf,iso9660 noauto,owner,kudzu,ro 0 0
  8. /dev/fd0                /mnt/floppy             auto    noauto,owner,kudzu 0 0

2.2输出重定向

输出重定向有两种方式,一种是直接输出,使用一个大于号“>”实现;

            另一种是以附加的方式输出,使用两个大于号“>>”实现。

      前者会覆盖原始的输出内容,而后者会添加到文件最后。以下通过实例说明其区别。

//ls命令重定向到/root/dir.txt并显示

ls >dir.txt

cat < dir.txt

anaconda-ks.cfg

install.log

install.log.syslog

//ls -l命令以附加的方式重定向到/root/dir.txt并显示

ls -l >>dir.txt

cat < dir.txt

anaconda-ks.cfg

install.log

install.log.syslog

总用量 24

-rw-r--r--  1   root   root   1245    7月22    21:07    anaconda-ks.cfg

-rw-r--r--  1   root   root   14522  7月22    21:01    intall.log

-rw-r--r--  1   root   root   2906    7月22     21:00   install.log.syslog

3。管道

管道和输入输出重定向十分类似。管道的作用是在一个命令的标准输出和另一个命令的标准输入之间建立一个通道。例如下面命令就是将ps -aux的标准输出传递给grep作为输入。

ps -aux | grep httpd

4.shell里的特殊字符

和其他编程语言一样,shell里也有特殊字符。常见的有美元符号($),反斜线(\)和引号

1。美元符号

美元符号表示变量替换,即用其后面指定的变量的值来代替变量。反斜线“\”为转义字符,转义字符告诉shell不要对其后面的那个字符进行特殊处理,只是当做普通字符。而shell下的引号情况比较复杂,分为三种:双引号("),单引号(‘)和倒引号(`)。他们的作用都不尽相同,以下一一说明。

2。双引号(")

双引号括起来的字符除$,倒引号(`)和反斜线(\)仍保留其特殊功能外,其余字符均作为普通字符对待。

3。单引号(‘)

由单引号括起来的字符都作为普通字符出现。

4。倒引号(`)

倒引号括起来的字符串被shell解释为命令行,在执行时,shell会先执行该命令,并以它的标准输出结果取代整个引号部分

示例1的代码及输出如下:

#echo "My current directory is `pwd` and logname is $LOGNAME"【双引号中的倒引号和美元符号保持原来的功能】

My current directory is /root and logname is root

示例2的代码及输出如下:

#echo "My current directory is `pwd` and logname is \$LOGNAME"【双引号中的转义字符保持原来的功能】

My current directory is /root and logname is $LOGNAME

示例3的代码及输出如下:

#echo ‘My current directory is `pwd` and logname is $LOGNAME‘【单引号里面的内容不变】

My current directory is `pwd`and logname is $LOGNAME

5。shell脚本的注释

shell脚本和其它编程语言一样,也拥有注释。注释方法为在注释行前加#号。

例如以下脚本:

[plain] view plain copy

  1. #!/bin/sh
  2. #Filename: comment.sh
  3. #Description:this script explains how to make a comment
  4. echo “This script explains how to make a comment ”

创建脚本时,脚本的第一行通常称为shbang(#!)行。当脚本启动后,UNIX内核检查文件的第一行以决定将要执行的程序类型。

shbang符号(#!)后面的路径是用来解释此脚本的shell位置。要正确使用这个特性,#!必须是文件中最前面的两个字符。如果

文件头部有空格字符或者空白行,则此特性被忽略,该行被解释为普通的注释行。

6。shell脚本的注释后-f的作用

之前是见过这样的写法:

[plain] view plain copy

  1. #!/bin/csh -f
  2. #Filename: comment.sh
  3. #Description:this script explains how to make a comment
  4. echo “This script explains how to make a comment ”

通常称作快速启动选项,-f开关通知shell启动时不加载.cshrc文件。

对ksh其shbang行可能为!/bin/ksh -p

对于bash可能!/bin/bash --noprofile
7.shell脚本中运算符

范例:

时间: 2024-08-08 13:59:16

介绍shell脚本的相关文章

shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量

一.shell脚本介绍shell脚本要想写好,必须通过不断地去练习写才能写好,没有捷径要在我们拿到一个需求的时候有一个脚本的大致思路,想到需求怎么去实现shell脚本可以大大提高我们的工作效率二.shell脚本结构和执行[[email protected] ~]# mkdir shell //创建一个shell文件夹,存放实验的shell脚本[[email protected] ~]# cd shell/[[email protected] shell]# ls[[email protected

20.1-4 shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量

20.1 shell脚本介绍20.2 shell脚本结构和执行20.3 date命令用法%w 星期几 %W今年的第几周cal是显示日历的时间戳可以相互查询 20.4 shell脚本中的变量 原文地址:http://blog.51cto.com/13450039/2104595

Shell脚本的自学之路---开门篇,简单介绍和使用

首先我们就不介绍shell脚本具体是什么东东了,这个博客只是记录自己学习shell脚本的每一步. 首先介绍一下shell的基本规则: Shell 脚本不是复杂的程序,它是按行解释的,脚本第一行总是以  #!/bin/sh开头,它通知系统以下的 Shell 程序使用系统上的 Bourne Shell 来解释.第二行注释中写入脚本名,第三行注释开始写入脚本功能-- 习惯.一般是通过vi编辑器来编写shell脚本的. 接下来正式进入我们的shell编程的第一步:  在命令行中输入  sudo vi s

shell脚本介绍、shell脚本结构和执行、date命令用法、shell脚本中的变量

shell脚本介绍 shell脚本结构和执行 开头需要加#!/bin/bash 因为有了#!/bin/bash文件头所以需要给01.sh文件执行权限 [[email protected] shell]# chmod a+x 01.sh 以#开头的行作为解释说明 脚本的名字以.sh结尾,用于区分这是一个shell脚本 执行方法有两种chmod +x 1.sh; ./1.shbash 1.sh 查看脚本执行过程 bash -x 1.sh 查看脚本是否语法错误 bash -n 1.sh date命令用

学习 shell脚本之前的基础知识

转载自:http://www.92csz.com/study/linux/12.htm  学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富.笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要

Linux中的shell脚本编程——基础篇

概述: shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础.脚本基本格式.变量.运算.条件测试这几个方面详细介绍shell脚本编程的基础内容,也是我们必须要掌握熟练的内容. 一.编程环境 1.程序:指令+数据 程序编程的风格有两种: 过程式:以指令为中心,数据服务与指令 对象式:以数据为中心,指令服务于数据 2.程序的执行方式: □计算机:只能识别二进制文件

《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf

下载地址:网盘下载 内容简介  · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shell 脚本编程基础:第三部分深入探讨shell 脚本编程的高级内容:第四部分介绍如何在现实环境中使用shell 脚本.本书不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料. 本书内容全面,语言简练,示例丰富,适合于linux 系统管理员及Linux 爱好者阅读

Linux学习日记—Shell脚本与计划任务

本篇文章将以实现MySQL数据库的定期自动备份为目标,介绍Shell脚本与计划任务的完美协作过程.其中,Shell脚本负责具体的备份操作,Crond服务器负责控制备份周期. [确认备份方案] 备份主机:IP地址为192.168.4.110,通过机柜内网络连接目标主机. 数据库服务器:IP地址为192.168.4.11,MySQL服务监听端口为3306. 备份内容:对MySQL服务器中的studydb,coursdb库进行远程备份,每天凌晨2:30执行,每个库备份独立的.sql文件,然后压缩为.t

shell 脚本的学习 IFS解惑

一.IFS 介绍 Shell 脚本中有个变量叫 IFS(Internal Field Seprator) ,内部域分隔符.完整定义是The shell uses the value stored in IFS, which is the space, tab, and newline characters by default, to delimit words for the read and set commands, when parsing output from command sub