Linux下的shell编程1.ppt
文本预览下载声明
§2 shell 变量 访问变量值 $varname 输出变量值 echo $varname 例: #!/bin/bash x=12 y=$x echo The value of variable y is $y §2 shell 变量 从键盘读取变量输入值 read varname 把读入的值依次赋给各变量,所有剩余的值赋给最后一个变量 例: #!/bin/bash # 取得使用者的名字,打印出问候语 echo -n Enter your name: read user_name echo Hello $user_name! §2 shell 变量 引号的使用问题 一般情况下,脚本文件中的参数以空白字符分隔(例如一个空格,一个制表符或者一个换行符)。如果想在一个参数中包含一个或多个空白符,就必须给参数加上引号。 例如像$foo这样的变量在引号中的行为取决于你所使用的引号类型。如果放在双引号中,程序执行到这一行时就会把变量替换为它的值;如果你把它放在单引号中,就不会发生替换现象。 还可以在$字符前加上一个\字符以取消它的特殊含义。 §2 shell 变量 例 变量的使用 #!/bin/bash myvar=“Hi there” echo $myvar echo “$myvar” echo ‘$myvar’ echo \$myvar echo Enter some text read myvar echo ‘$myvar’ now equals $myvar exit 0 §2 shell 变量 环境变量 当一个shell脚本程序开始执行时 ,一些变量会根据环境设置中的值进行初始化。这些变量通常用大写字母做名字,以便于和用户在脚本程序里定义的变量区分开。 例: $HOME:当前用户的家目录 $PATH:以冒号分隔的用来搜索命令的目录列表 $PS1:命令提示符,通常是$,在bash中可以使用更复杂的值 §2 shell 变量 $PS2:二级提示符,用来提示后续的输入,通常是字符 $IFS:输入域分隔符。当shell读取输入时,它给出用来分隔单词的一组字符,通常为空格,制表符和换行符。 $LOGNAME:你的注册名 $PWD:当前目录的绝对路径名 $SHELL:当前使用的 shell $TERM:你的终端类型 §2 shell 变量 $0:shell脚本的名字 $?:上一条命令执行后的返回值 $#:传递给脚本的参数个数(不包含 shell 脚本名) $$:shell脚本的进程号,脚本程序通常会用它来生成一个唯一的临时文件,如/tmp/tmpfile_$$ 访问环境变量 $环境变量名 §2 shell 变量 参数变量 如果脚本程序在调用时带有参数,一些额外的变量就会被创建。即使没有传递任何参数,环境变量$#也依然存在,只不过它的值是0罢了。 命令行:命令名 参数1 参数2 参数3 …… 位置变量:$0 $1 $2 $3 …… $9 $*:在一个变量中列出所有的参数,各个参数之间用环境变量IFS中的第一个字符分隔开。如果IFS被修改了,那么$*将命令行分隔为参数的方式就随之改变。 $@:它是$*的一种精巧的变体,它不使用IFS环境变量,所以即使IFS为空,参数也不会挤在一起。 §2 shell 变量 例,分析$@和$*之间的区别 $ IFS=‘’ $ set foo bar bam $ echo “$@” foo bar bam $ echo “$*” foobarbam $ unset IFS $ echo “$*” foo bar bam §2 shell 变量 例,使用参数和环境变量 #!/bin/bash salutation=“Hello” echo $salutation echo “The program $0 is now running” echo “The second parameter was $2” echo “The first parameter was $1” echo “The parameter list was $*” echo “The user’s home directory is $HOME” echo “Please enter a new greeting” read salutation echo $salutation echo “The script is now complete” exit 0 §2 shell 变量 运行这个脚本程序,将会得到如下的输出结果 # bash try_var.sh foo bar baz Hello The program try_var
显示全部