shell脚本-变量
2015-12-01 10:57
465 查看
在shell脚本中变量主要分为
用户自定义变量
环境变量
位置参数变量
预定义变量
赋值操作等号两边不应该有空格
$ echo $var #切记变量名前加$
aa
变量调用还有多种写法
$ echo “$var” #可以用双引号将变量括起来
aa
$ echo “$var”test
aatest
$ echo ${var} #可以用大括号讲变量名括起来
aa
$ echo ‘$var’ #如果用单引号括起来,则只会原样输出
$var
$ exit #退出子shell
或者
$ var=”aa”
$ export var #采用expert 变量名 方式
$ bash #在当前shell创建一个子shell
$ echo $var
aa
#删除环境变量,注意:在子shell中删除环境变量后父shell环境变量不受影响
$ PATH=”$PATH”:/bin/java #为PATH添加一个/etc/java路径
其特殊符号所代表的含义:
\d :代表日期,格式为weekday month date
\H :完整的主机名
\h :简写主机名
\t :显示时间为24小时格式,格式为:”HH:MM:SS”
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。
\W :显示当前目录最后一个目录
\# :执行的第几个命令
$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
$0 代表命令本身
1,1,2,3....,3....,9第一个参数,第二个参数,第三个参数,第九个参数, 十以上的参数用${10}表示
$*代表命令中所有的参数,把所有的参数看成一个整体
$@也代表命令中所有的参数,把每个参数区分对待
$#代表命令中所有参数的个数
执行结果:
$ chmod +x positionPar.sh
$ ./positionPar.sh p1 p2 p3
./positionPar.sh
p1
p2
p1 p2 p3
p1 p2 p3
3
执行结果显示$@与$*是相同的,接下来再写一个脚本来验证这来这两个的区别
执行结果:
$ chmod +x checkDiff.sh
$ ./checkDiff.sh 1 2 3
number is 1,value is 1 2 3
number is 1,value is 1
number is 2,value is 2
number is 3,value is 3
$? 最后一次执行的命令返回状态。如果这个变量为0,证明上一个命令正确执行;如果这个变量非0,则证明上一个命令不正确
$$当前进程的进程号(PID)
$!后台运行的最后一个进程的进程号(PID)
$?
$ echo ‘a’ #执行一个正确的命令
a
$ echo $?
0
$ dfdf #执行一个错误的命令(找不到该命令)
$ echo $?
127
$!
可以在执行命令最后加&来代表后台执行
http://www.linuxidc.com/Linux/2013-10/91679.htm ↩
用户自定义变量
环境变量
位置参数变量
预定义变量
注意
默认变量类型为字符串类型赋值操作等号两边不应该有空格
用户自定义变量
Linux中最常用的变量,用户可自由定义,只在当前的shell生效。变量定义与调用
$ var=”aa” #为变量var赋值”aa”$ echo $var #切记变量名前加$
aa
变量调用还有多种写法
$ echo “$var” #可以用双引号将变量括起来
aa
$ echo “$var”test
aatest
$ echo ${var} #可以用大括号讲变量名括起来
aa
$ echo ‘$var’ #如果用单引号括起来,则只会原样输出
$var
删除自定义变量
unset var #unset 变量名,注意:变量名前不需要$环境变量
主要保存和系统操作环境相关的数据,在当前的shell以及其子shell中生效。启动一个子shell
$ bash #使用bash来创建一个子shell$ exit #退出子shell
环境变量定义与调用
$ export var=”aa” #采用expert 变量名=变量值 方式或者
$ var=”aa”
$ export var #采用expert 变量名 方式
子shell中能够使用父shell环境变量
$ expert var=”aa”$ bash #在当前shell创建一个子shell
$ echo $var
aa
删除环境变量
$ unset var#删除环境变量,注意:在子shell中删除环境变量后父shell环境变量不受影响
常用环境变量
PATH
系统查找命令路径$ PATH=”$PATH”:/bin/java #为PATH添加一个/etc/java路径
PS1
定义系统提示符其特殊符号所代表的含义:
\d :代表日期,格式为weekday month date
\H :完整的主机名
\h :简写主机名
\t :显示时间为24小时格式,格式为:”HH:MM:SS”
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。
\W :显示当前目录最后一个目录
\# :执行的第几个命令
$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
位置参数变量
主要像脚本中传递参数或数据,变量名不能自定义,变量作用固定。1$0 代表命令本身
1,1,2,3....,3....,9第一个参数,第二个参数,第三个参数,第九个参数, 十以上的参数用${10}表示
$*代表命令中所有的参数,把所有的参数看成一个整体
$@也代表命令中所有的参数,把每个参数区分对待
$#代表命令中所有参数的个数
#positionPar.sh #!/bin/bash echo $0 echo $1 echo $2 echo $* echo $@ echo $#
执行结果:
$ chmod +x positionPar.sh
$ ./positionPar.sh p1 p2 p3
./positionPar.sh
p1
p2
p1 p2 p3
p1 p2 p3
3
执行结果显示$@与$*是相同的,接下来再写一个脚本来验证这来这两个的区别
#checkDiff.sh #区分$@与$* #!/bin/bash x=0 for i in "$*" do x=$(($x+1)) echo "number is $x,value is $i" done y=0 for j in "$@" do y=$(($y+1)) echo "number is $y,value is $j" done
执行结果:
$ chmod +x checkDiff.sh
$ ./checkDiff.sh 1 2 3
number is 1,value is 1 2 3
number is 1,value is 1
number is 2,value is 2
number is 3,value is 3
预定义变量
是bash中已经定义好的变量,变量名不能定义,变量作用也固定。$? 最后一次执行的命令返回状态。如果这个变量为0,证明上一个命令正确执行;如果这个变量非0,则证明上一个命令不正确
$$当前进程的进程号(PID)
$!后台运行的最后一个进程的进程号(PID)
$?
$ echo ‘a’ #执行一个正确的命令
a
$ echo $?
0
$ dfdf #执行一个错误的命令(找不到该命令)
$ echo $?
127
$!
可以在执行命令最后加&来代表后台执行
http://www.linuxidc.com/Linux/2013-10/91679.htm ↩
相关文章推荐
- Linux-Shell:mysql的bin_log日志清理
- shell expect
- Use Shell ContextMenu in your applications
- Shell编程
- shell 执行ftp的动作和日志合并
- 往~/.bashrc 文件添加JAVA_HOME导致 该文件错误,sudo等指令无法使用
- 第一个shell脚本-helloworld
- shell修改文件名
- Shell基础
- SHELL
- shell下的作业管理[转]
- shell笔记-local、export用法 、declare、set
- Shell之预启动脚本
- Shell之导出数据库的表为Excel的脚本
- Shell之定时拉起脚本
- 一组Linux Shell Scripting小练习
- 监控服务器端口,Down掉会自动重启,并发送邮件 Linux Shell
- linux Shell之cut命令用法
- win linux命令行下写webshell语句
- 让Linux下的cron以秒为单位执行shell脚本的3种方法