Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1680090
  • 博文数量: 1493
  • 博客积分: 38
  • 博客等级: 民兵
  • 技术积分: 5834
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-19 17:28
文章分类

全部博文(1493)

文章存档

2016年(11)

2015年(38)

2014年(137)

2013年(253)

2012年(1054)

2011年(1)

分类:

2012-06-04 11:16:06

1:变量

 

shell里,使用变量之前通常不需要事先为它声明,我们只是简单地在使用它们的时候创建即可。默认情况下,所有变量均以字符串形式存储,即使是被赋值为数值时也这样。

 

shell中,我们可以使用$加上变量来访问它的内容(有点类似与C语言的取地址符&)。当为变量赋值的时候,我们只需要变量名,如果此变量不存在就会被自动创建。(如果字符串有空格,必须加上双引号,而且等号两边不能有空格)

 

solution="Hello World !"      #创建变量solution

echo $solution              #使用变脸solution

 

 

1.1 引号

 

一般情况下,脚本文件中的参数以空白字符分割开,如果你想要在一个参数中包含多个空白字符,就必须给参数加上引号。

 

 

实例:

#!/bin/sh

# filename is t

myvar="Hello World !"

echo $myvar      

echo "$myvar"

echo '$myvar'

echo \$myvar

 

 

执行结果:

lishuo@lishuo-Rev-1-0:~/桌面$ ./t

Hello World !

Hello World !

$myvar

$myvar

 

 

1.2 环境变量

 

一个shell脚本程序开始执行的时候,一些变量会根据环境设置的值进行初始化,这些变量通常都以大写字母做名字,以便于和定义的变量区分开。下面是一些比较重要的变量。

 

 

$HOME 当前用户的主目录

$PATH 以冒号分割开的用来搜索命令的目录列表

$PS1 命令提示符,通常是$,bash中,字符串[\u@\h\w]$就是一个流行的默认值,它给出用户名,机器名和当前目录

$PS2 二级提示符,用来提示后续的输入,通常是>

$IFS 输入域分隔符,当shell读取输入的时候,用来分割单词的一组字符,他们通常是空格,制表符或者换行符。

$0 shell脚本的名字

$# 传递给脚本的参数

$$ shell脚本的进程号,脚本程序通常会生成一个唯一的临时文件,如/tmp/tmpfile_$$

 

 

 

1.3 参数变量

 

 

如果你的脚本程序在调用的时候带有参数,它就会创建一些额外的变量,即使没有传递变量,环境变量$#也依旧存在,只不过它的值为0

 

 

参数列表如下:

 

$1,$2,$3.... 脚本程序的参数

$* 在一个变量中列出所有的参数,各个参数之间用环境变量IFS中的第一个字符分割开

$@ 它是$*的变体,它不适用IFS变量,所以在IFS为空的时候,参数的值不会结合在一起。

 

 

实例:

#!/bin/sh

X="Hello"

echo $X

echo "The program $0 is now runing"

echo "the second parameter was $2"

echo "the first parameter was $1"

echo "the user's hmoe directory is $HOME"

 

 

执行结果:

lishuo@lishuo-Rev-1-0:~/桌面$ ./t

Hello

The program ./t is now runing

the second parameter was 

the first parameter was 

the user's hmoe directory is /home/lishuo

 

 

这些内容是我平时阅读的笔记,源自《linux程序设计第三版》,详细内容请看原书

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