变量

2019-07-18  本文已影响0人  御都

1、变量的命名和使用规则
1.1 以字母和下划线为开头,不能包含特殊字符比如@,#,!等,区分大小写。在变量名前加$,比如$myFirstVar,建议用再用{}括起来避免发生误会。可以使用未初始化的变量,只是内容为空没有意义。

shiyanlou:~/ $ echo ${study} //可以使用未被定义的变量,只是为空                                                                                                      [22:24:52]

shiyanlou:~/ $ _name=Lily                                                                                                          [22:23:22]
shiyanlou:~/ $ _Name=Lucy                                                                                                          [22:24:20]
shiyanlou:~/ $ echo ${_name}                                                                                                       [22:24:27]
Lily
shiyanlou:~/ $ echo ${_Name}                                                                                                       [22:24:38]
Lucy
shiyanlou:~/ $ echo $_name_11           //认为要打印的变量为_name_11                                                                                       [22:32:20]

shiyanlou:~/ $ echo ${_name}_11     //{}括起来避免误会                                                                                               [22:34:38]
Lily_11

1.2 变量名初始化时,赋值号前后无空格,否则运行时会报错找不到该变量

shiyanlou:~/ $ test = 1                                                                                                            [22:21:45]
zsh: parse error: condition expected: =
shiyanlou:~/ $ test=1                                                                                                              [22:23:01]
shiyanlou:~/ $ echo ${test}                                                                                                        [22:23:09]
1
shiyanlou:~/ $   

1.3 变量的类型
共3种类型:字符串,整数数字和布尔值,数组和函数。如果要处理浮点数需要使用awk命令

shiyanlou:~/ $ a=1;b=true;c="hello shell"                                                                                          [21:01:39]
shiyanlou:~/ $ echo $a $b $c                                                                                                       [21:07:21]
1 true hello shell
shiyanlou:~/ $ 

1.4 给变量赋值为字符串时,如果字符串之间有空格需要用单/双引号将字符串扩起来

shiyanlou:~/ $ a=hello                                                                                                             [22:20:10]
shiyanlou:~/ $ echo $a                                                                                                             [22:20:19]
hello
shiyanlou:~/ $ b=hello world                                                                                                       [22:20:25]
zsh: command not found: world
shiyanlou:~/ $ b="hello world"                                                                                                     [22:20:36]
shiyanlou:~/ $ echo $b                                                                                                             [22:21:41]
hello world
shiyanlou:~/ $   

1.5 单双引号的区别
给变量赋值时没区别,和echo连用时,单引号只会按字面值打印,双引号会翻译出变量的值打印

hiyanlou:~/ $ echo '${_name} world'                                                                                               [22:28:10]
${_name} world
shiyanlou:~/ $ echo "${_name} world"                                                                                               [22:32:09]
Lily world
shiyanlou:~/ $   

1.6 反引号的作用,执行反引号中的命令,并返回执行后的结果

shiyanlou:~/ $ pwd                                                                                                                 [22:46:52]
/home/shiyanlou
shiyanlou:~/ $ te=`pwd`                                                                                                            [22:55:42]
shiyanlou:~/ $ echo $te                                                                                                            [22:56:00]
/home/shiyanlou
shiyanlou:~/ $ 

1.7 如果给变量赋值为字符串,在调用该变量时一定要加双引号,避免字符串为空引发表达式报异常或者错误

shiyanlou:Desktop/ $ a=""                                                       [22:54:03]
shiyanlou:Desktop/ $ b=hello                                                    [22:54:10]
shiyanlou:Desktop/ $ [ $a = $b ];echo $?    未加双引号导致异常                              [22:54:19]
zsh: parse error: condition expected: =
1
shiyanlou:Desktop/ $ [ "$a" = "$b" ];echo $?                                    [22:54:24]
1
shiyanlou:Desktop/ $  

2 变量的分类
变量分为2种,局部变量和环境变量,局部变量只能在该shell脚本中使用,环境变量在整个linux界面中都可以使用。
二、系统常见的环境变量
0-------当前运行脚本的名称N-------运行该脚本时传入的第N个参数
?-------执行上一个命令是否成功,成功则为0,失败为非0#-------传入参数的个数
$*-------打印传入的参数

#! /bin/bash
echo "\$0 = $0"
echo "\$1 = $1"
echo "\$2 = $2"
echo "\$? = $?"

执行命令 bash test.sh abc 123,结果为:

:~/ $ bash test.sh abc 123                          
$0 = test.sh
$1 = abc
$2 = 123
$? = 0

三 局部和环境变量的转换

上一篇 下一篇

猜你喜欢

热点阅读