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表示没有错误,其他任何值表明有错误。