全部博文(1493)
分类:
2012-06-04 11:16:06
原文地址:shell程序设计语法之变量(1) 作者:无赖皮肤
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程序设计第三版》,详细内容请看原书