变量是任何一种编程语言都必不可少的组成部分,变量用来存放各种数据。脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell变量也遵循这个规则。
Shell变量的作用域可以分为局部变量、全局变量和环境变量。
Shell变量的作用域包括:
局部变量:只能在函数内部使用。
全局变量:可以在当前Shell进程中使用。
环境变量:可以在子进程中使用。
小实例
[root@bjidc1-jump31 scripts]# cat sh/var01.sh
str1=hello
str2=world
echo ${str1} ${str2}
echo $str1 $str2
printf "${str1}${str2} \n"
printf '${str1}${str2} \n'
运行结果:
[root@bjidc1-jump31 scripts]# bash !$
bash sh/var01.sh
hello world
hello world
helloworld
${str1}${str2}
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
- 只包含字母、数字和下划线: 变量名可以包含字母(大小写敏感)、数字和下划线 _,不能包含其他特殊字符。
- 不能以数字开头: 变量名不能以数字开头,但可以包含数字。
- 避免使用 Shell 关键字: 不要使用Shell的关键字(例如 if、then、else、fi、for、while 等)作为变量名,以免引起混淆。
- 使用大写字母表示常量: 习惯上,常量的变量名通常使用大写字母,例如 PI=3.14。
- 避免使用特殊符号: 尽量避免在变量名中使用特殊符号,因为它们可能与 Shell 的语法产生冲突。
- 避免使用空格: 变量名中不应该包含空格,因为空格通常用于分隔命令和参数。