shell编程

shell脚本程序不是很复杂,他是按行解释的,脚本程序总是以

#!/bin/sh

开始,他通知shell使用系统上的Bourne shell解释器。其中#是注释。

当编辑好脚本程序后,要使脚本程序可执行,只需修改脚本程序的权限,命令如下:

chmod +x filename

然后输入:

./filename

来执行脚本程序。

一个简单的例子:

$cat first

#!/bin/sh

echo "you are welcome to use bash."

echo "current work directory is $PWD"

echo "you are $LOGNAME"

增加执行权限:chomod +x first

开始运行脚本程序:./first

执行结果:

you are welcome to use bash.

current work directory is /home/wangfangyong/shell

you are wangfangyong

程序中echo用于输出;

可以定以变量,如:h=100定义变量h并赋值100,可以用echo输出单个变量,如echo ${h}可以输出h变量;

使用unset命令清除变量,如unset h就可以清除h变量;

使用set命令可以显示所有本地定义的shell变量;

结合变量:如变量h=“hello”变量w="world",结合h和w两个变量方法为:echo ${h}${w},输出结果为:hello world

测试变量是否已经设置:${variable:-value}如果设置了变量值,则使用它;如果没有则取新值,如:

colour=blue

echo "this colour is ${colour:-green}"

结果为:this colour is blue

现在清除该值,再来看看结果:

unset colour

echo "this colour is ${colour:-green}"

echo ${colour}

结果为:this colour is green

输出colour失败,原因是${colour:-green}并没有把实际值传给变量,需要使用${variable:=value}才能完成此功能:

unset colour

echo "this colour is ${colour:=green}"

echo ${colour}

结果为:this colour is green

       green

设置只读变量,格式如下:

variable-name=value

readonly variable-name  如:

max=65535

readonly max

echo ${max}

将max设置成一个常量且设为只读;要查看只读变量,可以使用命令:readonly。

设置环境变量:

VARIABLE-NAME=value

export VARIABLE-NAME

显示环境变量(与显示本地变量一样):

MYSHELL=‘bash’

export MYSHELL     #设置环境变量

echo ${MYSHELL}   #显示环境变量

使用env命令可以查看所有的环境变量;同样可以使用unset命令清除环境变量:unset MYSHELL;set -a 可以指明所有变量直接被导出,如:

cat wangfangyong.profile

set -a

MAIL='/var/spool/mail/wangfangyong'

PATH=$HOME:$PATH

可以使用export命令将定义过的变量导出到子进程,只要使用export命令导出变量,就可以在任意多的脚本中使用该变量,他们均继承导出变量的所有权,当然不可以将变量从子进程导出到父进程,但可以通过重定向做到。

还可以通过shell向系统命令传递参数,shell中有7个特定变量:

$#:传递到脚本的参数个数;$*:以一个单字符串显示所有向脚本传递的参数,与位置变量不同,此选项参数可以超过9个;$$:脚本运行的当前进程id号;$!:后台运行的最后一个进程的id号;$@:与$#相同,但是使用时加引号,并在引号中返回每个参数;$-:显示shell使用的当前选项,与set命令功能相同;$?:显示最后命令的退出状态,0表示没有错误,其他任何值表明有错误。

posted on 2010-10-03 12:37  生活费  阅读(578)  评论(2编辑  收藏  举报

导航