一、变量的定义
变量即在程序运行过程中它的值是允许改变的量
变量是用一串固定的字符来表示不固定的值的一种方法
变量是一种使用方便的占位符,用于引用计算机内存地址,该地址可以存储 Script 运行时可更改的程序信息
在 shell 中变量是不能永久保存在系统中的,必须在文件中声明
二、变量名称的规范
eg:your_name="runoob.com"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。
同时,变量名的命名须遵循如下规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线(_)。
变量名称格式定义:
WESTOS_LINUX
Westos_Linux
westoS_Linux
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)。
三、使用变量
使用一个已经定义的变量,只要在变量名前面加美元符号
如:
name='haiyan' #注意等号两边不要留空格
echo $name
echo ${name} #推荐使用,
ehco $name+$name
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
for skill in Ada Coffe Action Java; do
echo "I am good at ${skill}Script"
done
如果不给skill变量加花括号,写成echo "I am good at $skillScript",解释器就会把$skillScript当成一个变量(其值为空),代码执行结果就不是我们期望的样子了。
推荐给所有变量加上花括号,这是个好的编程习惯。
已定义的变量,可以被重新定义
四、在shell脚本中的变量种类
在 shell 中变量分为环境级变量、用户级变量、系统级变量这三种
环境级变量只在当前 shell 中生效, shell 关闭变量丢失
用户级变量写在用户的骨文件(.bash_profile)中,只针对当前用户生效,切换用户后就不再生效
系统级变量被写在系统的配置文件 /etc/profile 或者 /etc/profile.d/ 中,对于所有用户都生效
(在https://mp.csdn.net/mdeditor/99946984#这个博客有详解)
五、字符的转译及变量的声明
\ | 转译单个字符 |
---|---|
“” | 弱引用,批量转译“”中出现的字符 |
“ | 强引用,批量转译‘’中出现的字符 |
‘’与“” | 两者的区别在于,“”不能转译“",“`”,“!”,“$" |
${} | 变量声明 |
eg:
A=1
echo $Ab
echo ${A}b
六、变量值的传递
$1 | 脚本后的第一串字符串 |
---|---|
$2 | 脚本后的第二串字符串 |
$3 | 脚本后的第三串字符串 |
$# | 脚本后所跟的字符串的个数 |
$* | 脚本后跟的所有字符串,模式为“1 2 3 ” |
$@ | 模式后跟的所有字符串,模式为“1”“2”“3” |
vim test.sh编辑测试文件
## 七、补充内容
我们也可以通过这种模式来对自己要进行的变量进行简单的运算。
后续会有详细介绍
shell的命令行也属于一个变量,也可以进行修改