Shell 变量

2019-07-30  本文已影响0人  tafanfly

变量命名

shell命名规则如下:

例如下面的name='LiLei'name就是一个变量:

#!/bin/bash

name='LiLei'
echo $name

#sh test.sh
LiLei

注意变量名和==和赋值之间不能有空格, 否则会报错:
(1)name ='LiLei', 左边有空格, 脚本会报错 test.sh: line 2: name: command not found
(2)name= 'LiLei', 右边有空格, 脚本会报错 test.sh: line 2: LiLei: command not found

变量使用

使用变量名只需要在变量名前面加$符号, 而{}大括号可用可不同,主要是用来界定变量。
注意:shell变量不需要先定义后使用,如果对一个没有定义的变量取值,则值为空字符串

#!/bin/bash
name='LiLei'

echo $name
echo ${name}
echo "My name is ${name}Lei"
echo "My name is $nameLei"

#sh test.sh
LiLei
LiLei
My name is LiLeiLei
My name is

重定义变量

已定义的变量,可以被重新定义。

#!/bin/bash

name='LiLei'
echo $name
name='ZhangSan'
echo ${name}

#sh test.sh
LiLei
ZhangSan

只读变量

使用 readonly 命令可以将变量定义为只读变量,只读变量的值不能被改变, 否则报错。

#!/bin/bash

name='LiLei'
echo $name
readonly name
name='ZhangSan'
echo ${name}

#sh test.sh
LiLei
test.sh: line 6: name: readonly variable

删除变量

使用 unset 命令可以删除变量, 输出的被删除变量为空。

#!/bin/bash

name='LiLei'
echo $name
unset name
echo ${name}

#sh test.sh
LiLei

注意:只读变量不可被删除

#!/bin/bash

name='LiLei'
readonly name
unset name
echo ${name}

#sh test.sh
test.sh: line 5: unset: name: cannot unset: readonly variable
LiLei

特殊变量

特殊变量在后面的shell编写过程中广泛应用

变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的所有参数。
$@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前 Shell 进程 ID。对于 Shell 脚本,就是这些脚本所在的进程 ID。

变量类型

运行shell时,会同时存在三种变量:

上一篇下一篇

猜你喜欢

热点阅读