现在的位置: 首页 > 综合 > 正文

Shell 编程基础

2013年09月19日 ⁄ 综合 ⁄ 共 1687字 ⁄ 字号 评论关闭

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/19942/showart_433406.html

Ubuntu上的SHELL编程基础

http://wiki.ubuntu.org.cn/Shell%E7%BC%96%E7%A8%8B%E5%9F%BA%E7%A1%80

 

1.建立和运行shell程序

什么是shell程序呢? 简单的说shell程序就是一个包含若干行shell或者linux命令的文件象编写高级语言的程序一样,编写一个shell程序需要一个文本编辑器.VI在文本编辑环境下,依据shell的语法规则,输入一些shell/linux命令行,形成一个完整的程序文件.

执行shell程序文件前需要让它可执行:

#chmod +x file

有两种方式执行shell

(1)#sh file

(2)#./file

在编写shell,第一行一定要指明系统需要那种shell解释你的shell程序,:#!/bin/bash,#!/bin/csh,/bin/tcsh,还是#!/bin/pdksh .

 

2.shell中的变量

(1)常用系统变量

$# :保存程序命令行参数的数目

$? :保存前一个命令的返回码

$0 :保存程序名

$* :("$1 $2...")的形式保存所有输入的命令行参数

$@ :("$1""$2"...)的形式保存所有输入的命令行参数

 

(2)定义变量

shell语言是非类型的解释型语言,不象用C++/JAVA语言编程时需要事先声明变量.给一个变量赋值,实际上就是定义了变量.

linux支持的所有shell,都可以用赋值符号(=)为变量赋值.:

abc=9 (bash/pdksh不能在等号两侧留下空格 )

set abc = 9 (tcsh/csh)

由于shell程序的变量是无类型的,所以用户可以使用同一个变量时而存放字符时而存放整数.:

name=abc (bash/pdksh)

       set name = abc (tcsh)

       在变量赋值之后,只需在变量前面加一个$去引用.:

       echo $abc

 

(3)位置变量

       当运行一个支持多个命令行参数的shell程序时,这些变量的值将分别存放在位置变量里.其中第一个参数存放在位置变量1,第二个参数存放在位置变量2,依次类推...,shell保留这些变量,不允许用户以令外的方式定义他们.同别的变量,$符号引用他们.

 

3.shell中引号的使用方法

       shell使用引号(单引号/双引号)和反斜线("/")用于向shell解释器屏蔽一些特殊字符.反引号(`)shell则有特殊意义.:

       abc="how are you" (bash/pdksh)

       set abc = "how are you" (tcsh)

       这个命令行把三个单词组成的字符串how are you作为一个整体赋值给变量abc.

       abc1='@LOGNAME,how are you!' (bash/pdksh)

       set abc1='$LOGNAME,how are you!' (tcsh)

       abc2="$LOGNAME,how are you!" (bash/pdksh)

       set abc2="$LOGNAME,how are you!" (tcsh)

       LOGNAME变量是保存当前用户名的shell变量,假设他的当前值是:wang.执行完两条命令后,abc1的内容是:$LOGNAME, how are you!.abc2的内容是;wang, how are you!.

       象单引号一样,反斜线也能屏蔽所有特殊字符.但是他一次只能屏蔽一个字符.而不能屏蔽一组字符.反引号的功能不同于以上的三种符号.他不具有屏蔽特殊字符的功能.但是可以通过他将一个命令的运行结果传递给另外一个命令.:

       contents=`ls` (bash/pdksh)

       set contents = `ls` (tcsh)

 

4.shell程序中的test命令

抱歉!评论已关闭.