1、定义变量(无引号、单引号、双引号)
①、变量:用来存放各种数据,用一个固定的字符串代替可能发生变化的内容(通常脚本语言在定义变量时不需要指明类型,直接赋值即可,Shell变量也遵循这个规则);
②、使用变量前必须先定义一个变量并设置变量的值;
③、变量必须由字母、数字和下划线组成,且必须以字母或者下划线开头,首字符不能是数字,不能使用Shell里面的关键字;
④、无引号定义字符串:字符串不能不包含空白字符(如Space或Tab),一般连续的字符串,数字,路径等可以不加引号。若内容中有命令、变量等,会先把变量、命令解析出结果,然后再输出最终内容。
单引号定义字符串:引号里面是什么就输出什么
双引号定义字符串:输出是会先解析里面的变量和命令,再输出
2、输出变量值(换行输出、不换行输出两种方法)
①、换行输出:echo '$变量名' echo "$变量名n"
②、不换行输出:echo -n $变量名 echo $变量名 echo ${变量名}
3、修改变量值 变量名=“$新变量名” 变量名={$新变量名}
4、使用read赋值变量
read 变量名 回车→输入赋值内容→实现赋值
read -p “提示信息” 变量名→输入赋值内容→实现赋值
5、输出系统环境变量:使用env和export命令查看系统当前环境变量
6、几个特殊变量:$? 上个命令的退出状态,或函数的返回值。
$$ 查看当前Shell进程ID。对于Shell脚本,对于Shell脚本,就是这些脚本所在的进程ID。
7、输出重定向
①、在命令后输入“>”并且跟一个文件名,对原文件的内容进行覆盖
②、在命令后输入“>>"并且后跟一个文件名,表示在原文件的基础上追加新的内容
8、输入重定向
①、命令+<文件名1+>文件名2 将文件1的信息输入到文件2
9、管道“I”练习:
功能:一个命令的输出称成为另一个命令的输入
使用“I”链接两个命令,左侧命令的输出成为右侧命令的输入。
思考:变量名外面的花括号{ }是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
例: $skill="Java"
$echo "I am good at ${skill}Script"
I am good at JavaScript
如果不给 skill 变量加花括号,写成echo "I am good at $skillScript",解释器就会把 $skillScript 当成一个变量(其值为空),代码执行结果I am good at 就不是我们期望的样子了。
variable=`command`
variable=$(command)
第一种方式把命令用反引号` `(位于 Esc 键的下方)包围起来,反引号和单引号非常相似,容易产生混淆,所以不推荐使用这种方式;第二种方式把命令用$()包围起来,区分更加明显,所以推荐使用这种方式。



