介绍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
- LABEL=/ / ext3 defaults 1 1
- LABEL=/boot /boot ext3 defaults 1 2
- none /dev/pts devpts gid=5,mode=620 0 0
- none /proc proc defaults 0 0
- none /dev/shm tmpfs defaults 0 0
- /dev/hda3 swap swap defaults 0 0
- /dev/cdrom /mnt/cdrom udf,iso9660 noauto,owner,kudzu,ro 0 0
- /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脚本和其它编程语言一样,也拥有注释。注释方法为在注释行前加#号。
例如以下脚本:
- #!/bin/sh
- #Filename: comment.sh
- #Description:this script explains how to make a comment
- echo “This script explains how to make a comment ”
创建脚本时,脚本的第一行通常称为shbang(#!)行。当脚本启动后,UNIX内核检查文件的第一行以决定将要执行的程序类型。
shbang符号(#!)后面的路径是用来解释此脚本的shell位置。要正确使用这个特性,#!必须是文件中最前面的两个字符。如果
文件头部有空格字符或者空白行,则此特性被忽略,该行被解释为普通的注释行。
6。shell脚本的注释后-f的作用
之前是见过这样的写法:
- #!/bin/csh -f
- #Filename: comment.sh
- #Description:this script explains how to make a comment
- echo “This script explains how to make a comment ”
通常称作快速启动选项,-f开关通知shell启动时不加载.cshrc文件。
对ksh其shbang行可能为!/bin/ksh -p
对于bash可能!/bin/bash --noprofile
7.shell脚本中运算符


范例:



介绍shell脚本的更多相关文章
- shell脚本介绍 shell脚本结构和执行 date命令用法 shell脚本中的变量
- 学习 shell脚本之前的基础知识
转载自:http://www.92csz.com/study/linux/12.htm 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...
- linux 的基本操作(编写shell 脚本)
终于到shell 脚本这章了,在以前笔者卖了好多关子说shell脚本怎么怎么重要,确实shell脚本在linux系统管理员的运维工作中非常非常重要.下面笔者就带你正式进入shell脚本的世界吧. 到现 ...
- linux的基本操作(shell 脚本的基础知识)
shell 脚本的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本 ...
- 学习shell脚本之前的基础知识
日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位 ...
- shell脚本之前的基础知识
日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位 ...
- 转载:shell脚本之前的基础知识
转载地址:http://www.92csz.com/study/linux/12.htm 第十二章 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果 ...
- Linux Shell脚本编程-基础1
概述: shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础 ...
- Linux | Shell脚本的编写
Shell 脚本的介绍 Shell脚本通过Shell终端解释器当作人与计算机硬件之间的翻译官,用户可以通过它执行各种命令,不仅有简单的,还有复杂的,比如:判断.循环.分支等这些高级编程中才有的特性.S ...
随机推荐
- vs2008 试用版评估到期 vs2008试用版 升级正式版
心得: 解决Vs2008 试用版升级正式版 1.在控制面板里面找到vs2008的程序. 2.点击 更改删除按钮, 3.出现Vs2008的维护模式. 4.在此维护模式下,如果没有出现填写正版密匙的地方, ...
- Redis:在windows环境安装Redis
Redis:在windows环境安装Redis 第一步: 下载windows版本的Redis:https://github.com/MSOpenTech/Redis. 第二步: 在命令行执行:D:\r ...
- 安装linux版qq,安装二进制包编译器,安装mysql-5.6.11,删除已安装或安装失败的mysql-5.6.11,简单mysql练习题
上午[root@localhost ~]# ./test3.sh dev1^C[root@localhost ~]# groupadd dev1[root@localhost ~]# vim /etc ...
- 10277 - Boastin' Red Socks
描述:红黑袜子,给出的是红袜子被选到的概率,即为p/q,要计算的是在挑选出一对红袜子之前的红袜子和黑袜子的数目,假设红袜子数为n,黑袜子数为m,那么n(n-1)/(m(m-1))=p/q,求出红袜子数 ...
- 一步一步深入spring(3)--spring的依赖注入方式
对于spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过spring将bean所需要的一些参数传递到bean实例对象的过程,sprin ...
- 三千万数据量下redis2.4的一统计情况
先说一下工作场景,要求做一个服务,满足:处理千万级别数据,单个请求响应时间在20ms以下.由于是存储的数据格式为key:list[],所以很适合使用redis来存放数据,为了测试一下redis存储的效 ...
- Linux IO控制命令生成
在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值.cmd除了可区别数字外,还包含有助于处理的几种相应信息. cmd的大小为 32位,共分 4 个 ...
- ok6410 u-boot-2012.04.01移植五支持DM9000
继ok6410 u-boot-2012.04.01移植四后,开发板基本已支持MLC NAND,但还有一些细节地方修改,这节增加DM9000支持,通过网卡tftp程序到内存,接着通过NAND命令写到NA ...
- 记一次解决curl https证书问题
问题起因 在访问https的网站时,报出Peer's Certificate has expired的错误.如下: [root@localhost ~]# curl https://www.baidu ...
- 爱上PowerShell
Shell带来的好处是毋庸置疑的,当然也需要大量的时间去练习.PowerShell作为后起之秀, 同时试图打造一款更加人性化,更加易用的Shell.随着PowerShell开源跨平台的战略以及在Win ...