Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75620
  • 博文数量: 19
  • 博客积分: 372
  • 博客等级: 二等列兵
  • 技术积分: 200
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-20 14:01
文章分类

全部博文(19)

文章存档

2010年(19)

分类:

2010-05-08 18:11:12

1$$表示当前shellPID。设置只读变量,只读变量是不能被重新定义或复位的,但是,如果使用了declare函数,只读变量可以被重新定义,但不能被复位。

[root@localhost xinbo]# name=Tom

[root@localhost xinbo]# readonly name

[root@localhost xinbo]# echo $name

Tom

[root@localhost xinbo]# unset name

bash: unset: name: cannot unset: readonly variable

unset为复位变量,即把相关的变量从存储器中删除。

2、常用echoprintf来打印出相关字符串和变量到终端,用来提示用户。

3、可以建立数组如:

[root@localhost xinbo]# names=( Tome liu xin bo )

[root@localhost xinbo]# echo ${names[1]}

liu

改变其值:

[root@localhost xinbo]# names[1]=li

[root@localhost xinbo]# echo ${names[1]}

li

4、函数:格式

function_name () {commands; commands; }

function function_name {commands;commands;}

function function_name (){commands;commands;}

例子:[root@localhost xinbo]# function greet { echo "Hello $LOGNAME, today is $(date)";}

[root@localhost xinbo]# greet

Hello root, today is   5  8 17:44:18 CST 2010

在这里$(date)也可以用`date`代替。

 [root@localhost xinbo]# function greet { echo "Hello $LOGNAME, today is `date`";}

[root@localhost xinbo]# greet Hello root, today is   5  8 17:45:58 CST 2010

注意:{},左边{后面必须接一个空格。

 

[root@localhost xinbo]# declare -f

greet ()

{

    echo "Hello $LOGNAME, today is `date`"

}

[root@localhost xinbo]# declare -F

declare -f greet

[root@localhost xinbo]# export -f greet

[root@localhost xinbo]# bash

[root@localhost xinbo]# greet

Hello root, today is   5  8 17:48:47 CST 2010

[root@localhost xinbo]# ps

  PID TTY          TIME CMD

 6614 pts/1    00:00:00 bash

11305 pts/1    00:00:00 bash

11322 pts/1    00:00:00 ps

-f开关的declare命令列出在该shell中定义好的所有函数以及它们的定义。

-F开关的说明命令只列出函数名。

[root@localhost xinbo]# export -f greet

把该函数定义为全局函数,这样的话,在子shell中我们就可以使用了。

如何清除函数呢?

[root@localhost xinbo]# greet

Hello root, today is   5  8 17:55:58 CST 2010

[root@localhost xinbo]# unset -f greet

[root@localhost xinbo]# greet

bash: greet: command not found

[root@localhost xinbo]#

5、重定向

exec命令能够在不启动新进程的前提下,将当前正在运行的程序替换为一个新的程序,使用exec命令,不需创建子shell就能改变标准输入与输出。

exec打开文件后,read命令每次都会将文件指针移到文件的下一行,直到文件末尾。如果要再次从文件开始读文件,就必须先关闭文件再打开。但是,如果使用catsort这类工具,操作系统就会在结束自动关闭文件。

exec < filea,打开文件 filea,用于读标准输入。

exec >filex,打开文件filex,用于标准输出。

[root@localhost ~]# exec > temp

[root@localhost ~]# ls

[root@localhost ~]# pwd

[root@localhost ~]# echo Hello

[root@localhost ~]# exec > /dev/tty

[root@localhost ~]# echo Hello

Hello

[root@localhost ~]#

当执行完exec > temp后,以后执行的命令ls,pwd等都输出到temp中了,直到后面把其指向终端才能在屏幕上显示。

阅读(2876) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

安何2010-05-12 22:55:47