shell脚本-变量

在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/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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值