分类: linux
2012-06-02 21:43:29
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读取输入的时候,用来分割单词的一组字符,他们通常是空格,制表符或者换行符。
$0shell脚本的名字
$#传递给脚本的参数
$$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程序设计第三版》,详细内容请看原书