免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1954 | 回复: 6
打印 上一主题 下一主题

shell编程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-26 11:39 |只看该作者 |倒序浏览
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=$HOMEPATH

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

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

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

论坛徽章:
0
2 [报告]
发表于 2010-10-26 11:40 |只看该作者
学习

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
3 [报告]
发表于 2010-10-26 11:41 |只看该作者
支持!

论坛徽章:
0
4 [报告]
发表于 2010-10-27 15:01 |只看该作者
lz继续

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
5 [报告]
发表于 2010-10-27 17:02 |只看该作者
自己写的?还是从某个地方copy的?

论坛徽章:
1
15-16赛季CBA联赛之深圳
日期:2016-07-07 22:34:24
6 [报告]
发表于 2010-10-27 21:21 |只看该作者
是楼主的学习笔记吗?

论坛徽章:
0
7 [报告]
发表于 2013-05-09 15:47 |只看该作者
我也在学习shell脚本编程,一起学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP