C++day10 liunx基础完结篇
shell编程
第一个shell程序
什么是shell
Shell 是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。下面我们用一幅图来解释什么是shell。
为什么要学习shell
- Linux 运维工程师在进行服务器集群管理时,需要编写 Shell 程序来进行服务器管理。
- 对于 JavaEE 和 Python 程序员来说,工作的需要,会要求你编写一些 Shell 脚本进行程序或者是
- 服务器的维护,比如编写一个定时备份数据库的脚本。对于大数据程序员来说,需要编写 Shell 程序来管理集群。
shell脚本的编写执行方式
- 脚本格式要求
- 脚本以**#!/bin/bash **开头
- 脚本需要有可执行权限/sh命令
- 脚本的常用执行方式
- chmod u+x *.sh
- sh *.sh
实战
点击查看代码
[root@xq100 ~]# pwd
/root
[root@xq100 ~]# mkdir shellCode # 在root目录下面创建一个文件夹shellCode
[root@xq100 ~]# cd shellCode/
[root@xq100 shellCode]# ll
total 0
[root@xq100 shellCode]# vim hello.sh #创建一个脚本文件
保存并退出
然后没权限
第一种:
第二种:
我们先恢复脚本不可执行的权限。
点击查看代码
[root@xq100 shellCode]# chmod u-x hello.sh # 让hello.sh脚本不具备可执行的权限
[root@xq100 shellCode]# ll
total 4
-rw-r--r--. 1 root root 31 Sep 5 20:51 hello.sh
[root@xq100 shellCode]# sh hello.sh # 执行脚本
Hello world
shell的变量
Linux 中 Shell 的变量分为系统变量和用户自定义变量。系统变量: 、PWD、 、USER等等,比如:echo $HOME 等等。我们可以使用set命令显示当前 Shell 中所有变量。
定义用户变量
- 定义变量: 变量=值
- 撤销变量: unset 变量
- 声明静态变量:readonly 不可以用 unset
1)案例:定义变量A,并输出
点击查看代码
[root@xq100 shellCode]# vim vr.sh
点击查看代码
[root@xq100 shellCode]# chmod u+x vr.sh # 设置脚本权限
[root@xq100 shellCode]# ./vr.sh # 执行脚本
100
2)案例:撤销A,并输出
3)案例:定义静态变量B,尝试撤销,然后报错了)
4)案例:将指令返回的结果赋值给变量
设置环境变量
- 基本语法
- export 变量名=变量值:将 Shell 变量输出为环境变量/全局变量。我们通过一幅图来解释什么是环境变量/全局变量。
- source 配置文件:让修改后的配置文件立即生效
- echo $变量名:查询环境变量的值
案例:定义JAVA_HOME的环境变量,并在var.sh脚本里面使用这个环境变量
- 注释
1.单行 #
2.多行
:<<
注释
注释
!
设置位置参数变量
- 基本语法
- n : 为 数 字 , 0 代表命令本身, 9 代表第一到第九个参数,十以上的参数需要用大括号,如$
- *: 代 表 命 令 行 中 所 有 的 参 数 , *把所有的参数看成一个整体
- $@:代表命令行中所有的参数,不过该命令是把每个参数区分对待
- $#:代表命令行中所有参数的个数
预定义变量
- 基本语法
- $$:当前进程的进程号。
- $!:后台运行的最后一个进程的进程号。
- $?:最后一次执行的命令的返回状态。如果这个变量的值为 0,证明上一个命令正确执行;
如果这个变量的值为非 0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不
正确。
shell中的运算符
基本语法
- $((表达式))
- $[表达式]
shell中的条件判断
if判断
基本语法
注意:condition前后要有空格。
if-else判断
基本语法
shell中的循环
for循环
1)基本语法
点击查看代码
for 变量 in 值1 值2 值3…
do
满足循环条件需要执行的代码
done
案例:循环打印命令行输入的参数($@)
2)基本语法
点击查看代码
for((初始值;循环控制条件;变量变化))
do
满足循环条件需要执行的代码
done
while循环
基本语法:
点击查看代码
while [ 条件判断式 ]
do
代码
done
read读取控制台输入
shell函数
系统函数
比如:basename 获取文件名
自定义函数
需求:计算两个输入参数的和