第二节 Shell脚本编写语法及命令
2.1如何创建脚本文件?
1.创建脚本文件 -----vim 名字.sh
2.文件中的第一行-----编写解释器----#!/bin/bash
3.编写内容----不要出现交互式的语句
4.给脚本可执行权限----创建的文件没有x权限,需要给X权限
5.执行脚本---- ./脚本名.sh
6.作业: 编写脚本 :执行脚本会在/tmp创建yyn.log文件,并且文件中第一行是1,第二行是2,…10
第一种方式:内容如下:
执行结果如下:
2.2标准输入重定向----脚本中的非交互式编辑文件
1.命令<
<表示标准输入重定向 +文件
2.命令<<
<<表示标准输入重定向 +自定义文本 命令+<<+字符1+回车+内容+字符2
字符1和字符2必须是一样的
练习:一般使用<<EOF 和>EOF来定义
命令行中会有续航符,但是在编写脚本的时候,没有续航符,直接回车编写就行,
练习:编写yum源的配置文件:------脚本中的非交互式编辑文件
2.3执行脚本的方式
2.3.1.第一种方式(推荐使用)
脚本文件的第一行必须写命令解释器 ------#!/bin/bash
执行时,----绝对路径/相对路径 脚本文件必须有可执行权限(x)
---------绝对路径执行
-----------相对路径执行
绝对和相对执行的脚本文件中必须有-----#! /bin/bash
2.3.2.第二种方式
脚本中无需定义命令解释器
执行时 bash+脚本路径
-------相对路径执行
-------绝对路径执行
这个执行方式不需要写-----#!/bin/bash
总结:.上述2种方式都是在子shell中执行脚本都是先运行子shell,
2.3.3.第三种方式(极少用)
1.使用source进行执行------在当前设立了执行脚本
Source 脚本 ========== .(点) 脚本
Source .bashrc source .bash_profile----文件生效
在当前shell执行脚本,即使子进程执行完,退出,当前shell窗口也可以看到执行的结果
作业:编写脚本:
创建/tmp/test1目录
在目录中创建以时间命名的文件
将指定/etc/profile.d目录中的内容放入目录中
第一种方式
执行结果:
出现大量一样的数据需要修改,咋办?
1)在vim编辑器下在冒号模式下执行替换操作: %s/替换前的字符/替换后的字符/g
%S表示在所有行进行搜索, /g表示全局变量的全部行匹配
第二种方式:
2.4脚本编写语法
2.4.1 read 语法
语法格式: read +参数 “ 提示内容”+变量名
参数: -p+参数内容------参数内容显示在屏幕上,作为提示信息
-s--------(针对输入密码字符,使其不可见)
语法功能:可以从外界读入变量值
常用命令: read 变量名
Read -p “提示内容” 变量名
Read -s 不回显---类似密码
练习1:
针对密码不可见:-----加-s参数
练习2: 不指定用户固定使用一个目录来创建,+配合使用read -p
练习3: 配合使用$1参数
2.5位置参数变量
2.5.1 $n 用法—n是数字(除0)
$n----表示位置参数,表示传递的参数----是位置变量/位置参数
使用方式: 脚本名 变量值1 变量值2 变量值3 ……
$1到 9 , 代 表 第 一 个 到 第 九 个 参 数 , 十 以 上 的 参 数 , 需 要