shell脚本-变量

来源:互联网 发布:青岛美工设计培训班 编辑:程序博客网 时间:2024/06/03 14:04

在shell脚本中变量主要分为

  • 用户自定义变量
  • 环境变量
  • 位置参数变量
  • 预定义变量

注意

  1. 默认变量类型为字符串类型
  2. 赋值操作等号两边不应该有空格

用户自定义变量

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,2,3....,9第一个参数,第二个参数,第三个参数,第九个参数, 十以上的参数用${10}表示 
  • $*代表命令中所有的参数,把所有的参数看成一个整体
  • $@也代表命令中所有的参数,把每个参数区分对待
  • $#代表命令中所有参数的个数

#positionPar.sh#!/bin/bashecho $0echo $1echo $2echo $*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/bashx=0for i in "$*"    do        x=$(($x+1))        echo "number is $x,value is $i"    doney=0for 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

$
可以在执行命令最后加&来代表后台执行



  1. http://www.linuxidc.com/Linux/2013-10/91679.htm ↩
0 0
原创粉丝点击