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界面中都可以使用。
二、系统常见的环境变量
N-------运行该脚本时传入的第N个参数
#-------传入参数的个数
$*-------打印传入的参数
#! /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
三 局部和环境变量的转换
网友评论