1、定义变量(无引号、单引号、双引号)
无引号:赋值时,如果变量内容中有空格,则会造成赋值不完整。而在输出内容时,会将含有空格的字符串视为一个整体来输出;如果内容中有命令、变量等,则会先把变量、命令解析出结果,然后输出最终内容;如果字符串中带有空格等特殊字符,则有可能无法完整地输出,因此需要改加双引号。一般连续的字符串、数字、路径等可以不加任何引号进行赋值和输出,特别是对变量赋值时最好是用引号代替无引号的情况。
单引号:所见即所得,即输出时会将单引号内的所有内容都原样输出,或者描述为单引号里面看到的是什么就输出什么,这称为强引用。
双引号:输出双引号内的所有内容;如果内容中有命令要反引下、变量、特殊转义符等,会先把变量命令、转义字符解析出结果,然后再输出最终内容,这称为弱引用。
2、输出变量值(两种方法)、换行输出、不换行输出
输出换行默认无参数即可;
输出不换行添加参数-n即可。
3、修改变量值,追加新内容,并输出
4、使用read赋值变量值,并输出,对选项-p、-n进行练习
Read命令通常用在shell脚本中与用户进行交互的场合,该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。
read常用参数意义
-s 隐藏用户键入的值
-p 打印提示信息来提示用户输入正确的内容
-t 设置用户输入的时间限制;超时则退出程序
-n 限制用户输入内容的长度(单位是字符位)
-r 允许用户输入特殊字符,如 空格、/、\、?等
5、输出去系统环境变量
6、特殊变量的应用:$、?
Shell 中特殊变量及用法:
$$ Shell本身的PID(ProcessID)
$! Shell最后运行的后台Process的PID
$? 最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行;如果这个变量的值为非0,则证明上一个命令执行不正确。
$- 使用Set命令设定的Flag一览
$@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1""$2"… "$n"的形式输出所有参数。
$# 添加到Shell的参数个数
$0 Shell本身的文件名
$1~$n 添加到Shell的各参数值。
7、输出重定向”>”,”>>”,输出到wlh.sh(自己姓名首拼)中
>文件 输出重定向到一个文件或设备 覆盖原来的文件中
>>文件 输出重定向到一个文件或设备 追加原来的文件
cat 文件a > 文件b 将文件a的内容覆盖到文件b中
cat 文件a >> 文件b 将文件a的内容追加到文件b的尾部
8、输入重定向”<”练习(与ppt中不同的案例)
9、管道”|”练习。
一个命令的输出可以通过管道作为另一个命令的输入,可以理解成是一个容器,存放再终端显示器的内容。连接两个命令,把左边(第一个命令)的输出(显示再终端上的内容),当作第二个命令的输入。管道“|”一般结合more、grep命令使用,主要是分屏查看终端显示的内容。
用命令的执行结果为变量赋值的两种方法`command ` 或 $(command ),哪个更好?
`command ` 这种方式把命令用反引号` `包围起来,反引号和单引号非常相似,容易产生混淆,所以不推荐使用这种方式;$(command )这种方式把命令用$()包围起来,区分更加明显,所以推荐使用这种方式。
使用变量值的两种形式$variable_name 或 ${variable_name}区别是什么?
使用${}这种方式的好处是可以方便的实现两个变量的连接,同时看着也比较清楚。
如何验证变量的作用范围?
变量的作用范围是指变量在程序中的有效范围,可分为全局变量和局部变量两种
全局变量:定义在所有函数之外(也可以在函数体内未定义),作用于整个代码的变量
局部变量:定义在函数体内,只作用于函数体内的变量
没有声明的变量都是全局变量,在函数体外声明的变量也是全局变量,只有在函数体内部声明的变量才是局部变量。
将管道、find、grep结合进行练习。
管道|就是用来将符号|前的命令输出作为符号后命令的输入,多个命令的顺序一定是从左到右顺序执行。