进行多种运算和控制。
Bourne Shell有如下四种变量:
.用户自定义变量
.位置变量即 shell script之参数
.预定义变量(特别变量)
.环境变量(参考shell定制部分)
(1)用户自定义变量(数据的存储)
$ COUNT=1
$ NAME="He Binwu"
技巧:因为大部分UNIX命令使用小写字符,因此在shell编程中通常使用全大写变量,
当然这并不是强制性的,但使用大写字符能够在编程中方便地识别变量。
变量的调用:在变量前加$
$ echo $HOME
/home/hbwork
$ WEEK=Satur
$ echo Today is $WEEKday
Today is
$echo Today is $day
Today is Saturday
Shell变量赋值从右从左进行(Linux Shell/bash从左向右赋值!)
$ X=$Y Y=y
$ echo $X
y
$ Z=z Y=$Z
$ echo $Y
$
使用unset命令删除变量的赋值
$ Z=hello
$ echo $Z
hello
$ unset Z
$ echo $Z
$
有条件的命令替换
在Bourne Shell中能够使变量替换在特定条件下执行,即有条件的环境变量替换。
这种变量替换总是用大括号括起来的。
.配置变量的默认值
在变量未赋值之前其值为空。Bourne Shell允许对变量配置默认值,其格式如
下:
$
例:
$ echo Hello $UNAME
Hello
$ echo Hello $
Hello there
$ echo $UNAME #变量值并未发生变化
$ UNAME=hbwork
$ echo Hello $
Hello hbwork
$
.另一种情况:改变变量的值,格式如下:
$
例:
$ echo Hello $UNAME
Hello
$ echo Hello $
Hello there
$ echo $UNAME #变量值并未发生变化
there
$
.变量替换中使用命令替换
$USERDIR=$
.在变量已赋值时进行替换 $
.带有错误检查的有条件变量替换
$
例:
$ UNAME=
$ echo ${UNAME:?"UNAME has not been set"}
UNAME: UNAME has not been set
$ echo $
UNAME: parameter null or not set
(2)位置变量(Shell参数)
在shell script中位置参数可用..表示,表示内容通常为当前执行程式的文档名。
.防止变量值被替换 readonly variable
.使用export命令输出变量,使得变量对子shell可用,当shell执行一下程式时,shell
将为其配置一个新的环境让其执行,这称之了subshell. 在Bourne Shell中变量通常
被认为是本地变量,也就是说在对其赋值之外的shell环境之外是不认识此变量的。使
用export对subshell可用。
例:对变量PS1的export操作,shell的提示符将发生变化。
$ PS1=`hostname`$
peony$sh
$ echo $PS1
$ <-输出结果
$ exit
peony$export PS1
peony$sh
peony$ echo $PS1
peony$ <-输出结果
peony$
3.Shell Script编程
目的:使用UNIX所提供的最常用工具来完成所需复杂任务的强大功能。
(1)最简单的Shell 编程
$ls -R / |grep myname |more
每天数据的备份:
$ cd /usr/yourname; ls * |cpio -o > /dev/rmt/0h
书写程式的目的是一次编程,多次使用(执行)!
$ cat > backup.sh
cd /home/hbwork
ls * | cpio -o > /dev/rmt/0h
^D
执行:
$ sh backup.sh
或:
$ chmod x backup.sh
$ ./backup.sh
技巧:在shell script中加入必要的注释,以便以后阅读及维护。
(2)shell是个(编程)语言
同传统的编程语言相同,shell提供了很多特性,这些特性能够使您的shell script
编程更为有用,如:数据变量、参数传递、判断、流程控制、数据输入和输出,子
程式及以中断处理等。
. 在shell编程中使用数据变量能够将程式变量更为通用,如在上面backup.sh中:
cd $WORKDIR
ls * | cpio -o > /dev/rmt/0h
. Shell编程中的注释以#开头
. 对shell变量进行数字运算,使用expr命令
expr integer operator integer
其中operator为 - * / %, 但对*的使用要用转义符\,如:
$expr 4 \* 5
20
$int=`expr 5 7`
$echo $int
12
(3)Shell编程的参数传递, 可通过命令行参数连同交互式输入变量(read)
restoreall.sh 对backup.sh程式的备份磁带进行恢复
$cat > restoreall.sh
cd $WORKDIR
cpio -i < /dev/rmt/0h
^D
restore1.sh:只能恢复一个文档
#restore1 --program to restore a single file
cd $WORKDIR
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




