?????????Linux系统中的shell是一个特殊的应用程序,它介于操作系统内核与用户之间,充当了一个"翻译官"的角色,负责接收用户输入的操作指令命令并进行解释,将需要执行的操作传递给内核调动硬件执行,并输出执行结果。
面向过程语言? 开发的时候 ,需要一步一步执行
面向对象语言? ?开发的时候任务当成一个整体
编程语言排名
https://www.tiobe.com/tiobe-index/ ###各种语言使用量排行榜
顺数执行:程序按从上到下顺序执行
选择执行:程序执行过程中,根据条件的不同,进行选择不同分支继续执行
循环执行:程序执行过程中需要重复执行多次某段语句(已知次数 已知条件 死循环)
#!/bin/bash #脚本声明即解释器,表示此行以下的代码通过/bin/bash程序翻译执行
#this is my frist shell-Script #注释信息,描述此脚本做什么工作或每条语句的含义
echo " hello world! " #可执行语句,脚本具体的内容
????????命令出错不会影响接下来的命令继续,默认的是后面的命令还会继续执行
用bash -n 无法检查出来 ,可以使用 bash -x 进行观察
[root@localhost data]# vim second.sh
#!/bin/bash
cd /opt
touh kysw
ls /opt
[root@localhost data]# bash adar.sh
adar.sh:行3: touh: 未找到命令
kusw
[root@localhost data]# ls /opt
kysw
????????会影响接下来的命令继续,会导致后续的命令不继续执行
可以用bash -n 检查错误,提示的出错行数不一定是准确的
如果将后面fi去掉,那么就会报错
????????只能自己去筛查。
检查代码的正确与否
bash -n 脚本名称 (不在当前目录下加绝对路径) 检查语法错误
bash -x 脚本名称 (不在当前目录下加绝对路径) 逻辑错误
set? ?-e ? ? ? ??? ??在 ?脚本的前面输入 ?set -e ? 一旦出错立即停止
set -u ? ?变量不存在不让执行
如果出错又没有加set -e出现的后果:
如果大小写一样,那么就会删除
类型 | 设备文件 | 文件描述编号 | 默认设备 |
---|---|---|---|
标准输入 | /dev/stdin | 0 | 键盘 |
标准输出 | /dev/stdout | 1 | 显示器 |
标准错误输出 | /dev/stderr | 2 | 显示器 |
交互式硬件设备
标准输入:从该设备接收用户输入的数据
标准输出:通过该设备向用户输出数据
标准错误:通过该设备报告执行出错信息
重定向的意思就是 ,不输出到默认设备上,输出到你指定的位置(文件 、或其他输出设备)
类型 | 操作符 | 用途 |
---|---|---|
重定向输入 | < | 从指定的文件读取数据,而不是从键盘输入 |
重定向输出 | 1> | 将输出结果保存到指定的文件(覆盖原有内容) |
>> | 将输出结果追加到指定的文件尾部 | |
标准错误输出 | 2> | 将错误信息保存到指定的文件(覆盖原有内容) |
2>> | 标准错误输出结果追加到指定的文件尾部 | |
混合输出 | &>无论对错都可以重定向 | 将标准输出、标准错误的内容保存到同一个文件中 |
选择题??
#不能将正确和错误一起显示出来 的是那个?? ? ? ? ? 答案为E
A? ?[root@centos7 ~]#ls /data /xxx 1> /data/all.log 2>&1
B? ?[root@centos7 ~]#ls /data /xxx 2> /data/all.log 1>&2?
C? ?[root@centos7 ~]#ls /data /xxx &> /data/all.log ?
D? ?[root@centos7 ~]#ls /data /xxx >& /data/all.log ?E? ?[root@centos7 ~]#ls /data /xxx ? 2>&1 1> /data/all.log
将左侧的命令输出结果,作为右侧命令的输入(处理对象)可以 叠加使用