Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Linux Shell编程基础

1.介绍shell脚本简单的说shell就是一个包含若干行Shell或者Linux命令的文件。对于一次编写,多次使用的大量命令,就可以使用单独的文件保存下来,以便日后使用。通常shell脚本以.sh为后缀。在编写shell时,第一行一定要指明系统需要哪种shell解释用户的shell程序,如:#!/bin/sh,#!/bin/bash,#!/bin/csh,,#!/bin/tcsh和,#!/bin/ksh等。下面的run.sh则指明使用bash执行。#!bin/bashls -l通常,shell脚本会以#!/bin/sh作为默认的shell程序。执行shell的方式有两种:第一种是为shell脚本加上可执行权限并执行,第二种是通过sh命令执行shell脚本,例如执行当前目录下的run.sh脚本,命令如下://为shell脚本直接加上可执行权限并执行chmod 755 run.sh./run.sh//通过sh命令执行shell脚本sh run.sh2。输入输出重定向Linux使用标准输入stdin和标准输出stdout,来表示每个命令的输入和输出,还使用一个标准错误输出stderr用于输出错误信息。这三个标准输入输出系统默认与控制终端设备相联系在一起的。因此,在标准情况下,每个命令通常从它的控制终端中获取输入,将输出打印到控制终端的屏幕上。但是可以重新定义程序的输入stdin和输出stdout,将它们重定向。www.linuxidc.com最基本的方法就是将它们重定义到一个文件上去,从一个文件获取输入/输出到另外的文件中等。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 02.2输出重定向输出重定向有两种方式,一种是直接输出,使用一个大于号“>”实现;另一种是以附加的方式输出,使用两个大于号“>>”实现。前者会覆盖原始的输出内容,而后者会添加到文件最后。以下通过实例说明其区别。//ls命令重定向到/root/dir.txt并显示ls >dir.txtcat < dir.txtanaconda-ks.cfginstall.loginstall.log.syslog//ls -l命令以附加的方式重定向到/root/dir.txt并显示ls -l >>dir.txtcat < dir.txtanaconda-ks.cfginstall.loginstall.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.syslog3。管道管道和输入输出重定向十分类似。管道的作用是在一个命令的标准输出和另一个命令的标准输入之间建立一个通道。例如下面命令就是将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 $LOGNAME5。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 ”当然首行的#!/bin/sh属于特例,因为这一行同时指明了运行该脚本的shell。