Shell系列-编写及执行脚本
时间:2022-05-05
本文章向大家介绍Shell系列-编写及执行脚本,主要内容包括一、第一个Shell脚本、二、脚本构成及执行、三、简单脚本应用、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
一、第一个Shell脚本
1.什么是shell脚本? 提前写好可执行的语句,能够完成特定任务的文件(顺序执行,批量化处理;解释型程序)
2.shell版HelloWorld的诞生 脚本创建”三步走” -新建文本文件 -添加可执行的脚本语句(命令行) -添加x执行权限
[root@centos67-x64 /]# vim first.sh //创建文件
#!/bin/bash
echo "Hello World" //编写脚本语句
[root@centos67-x64 /]# chmod +x first.sh //添加x权限
[root@centos67-x64 /]# ./first.sh //运行脚本,查看运行结果
Hello World
二、脚本构成及执行
1.规范的脚本构成
#!
:脚本声明(使用哪种解释器)
#
:注释信息(步骤、思路、用途、变量含义等)
可执行的语句
#!/bin/bash //sha-bang调用标记
#A test program for shell-script //注释信息
echo "Hello World" //可执行的脚本语句或命令行
2.脚本的执行方式 2.1 方法一(作为”命令字”) -指定脚本文件的路径,前提是有x权限 2.2 方法二(作为”参数”)-不需要有x权限 -sh 脚本文件路径 -source 脚本文件路径 -.脚本文件路径
[root@centos67-x64 /]# sh first.sh
Hello World
[root@centos67-x64 /]# ./first.sh
Hello World
3.调试shell脚本 主要途径: -直接观察执行中的输出、报错信息 -通过sh -x 开启调试模式 -在可能出错的地方设置echo断点
[root@centos67-x64 /]# sh -x first.sh
+ echo 'Hello World'
Hello World
三、简单脚本应用
1.例-1:快速配置YUM 目的:为新装的客户机配置好YUM仓库 条件:软件源位于file:///misc/cd;通过脚本建立/etc/yum.repos.d/rhel6.repo文件
[root@centos67-x64 shell]# ls /etc/yum.repos.d/
repo
[root@centos67-x64 shell]# vim rhel6.sh
#!/bin/bash
rm -rf /etc/yum.repos.d/*.repo
echo '[repo]
name=rhel6 repo
baseurl=file:///misc/cd
enable=1
gpgcheck=0
gpgkey='> /etc/yum.repos.d/rhel6.repo
[root@centos67-x64 shell]# chmod +x rhel6.sh
[root@centos67-x64 shell]# ./rhel6.sh
[root@centos67-x64 shell]# ls /etc/yum.repos.d/
repo rhel6.repo
[root@centos67-x64 shell]# cat /etc/yum.repos.d/rhel6.repo
[repo]
name=rhel6 repo
baseurl=file:///misc/cd
enable=1
gpgcheck=0
gpgkey=
2.例-2:快速搭建FTP服务器 目的:为新装的客户机搭建好vsftpd服务 条件:安装vsftpd;开启服务;开机自启
[root@centos67-x64 shell]# vim ftpon.sh
#!/bin/bash
yum -y install vsftpd &> /dev/null
/etc/init.d/vsftpd restart
chkconfig vsftpd on
- PowerVM虚拟化环境下 CPU 利用率的监控与探究
- 虚函数中构造函数的调用顺序
- HDUOJ-----4512吉哥系列故事——完美队形I(LCIS)
- go语言mongdb管道使用(二)
- HDUOJ--4565 So Easy!
- Go 语言Map(集合)
- 简单的java实验,涉及到 类继承以及接口问题,方法体的重写(区别于重载)
- java 快速求素数
- 狄斯奎诺(dijkstra 模板)
- HDUOJ---汉洛塔IX
- 小错误系列
- HDUOJ-----4510 小Q系列故事——为什么时光不能倒流
- HDUOJ----4509湫湫系列故事——减肥记II
- HDUOJ-----4506小明系列故事——师兄帮帮忙
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- jQuery根据填写的input的数值导出excel表格
- 小程序根据返回值英文渲染出对应的中文
- redis灵魂拷问:聊一聊AOF日志重写
- 小程序返回的时间戳转化成时间
- JSP 报错:ReferenceError: $ is not defined
- 小程序使用 组件库 vant-weapp详细教程
- DEBUG=1 宏定义对 @weakify 和 @strongify 的影响分析
- 为什么 demangle 会失败?
- js使用webgl
- Java 后台开发面试题分享三
- llvm 对 copy 属性的优化(1)
- Zookeeper 分布式技术入门
- llvm 对 copy 属性的优化(2)
- 为什么 Linux 默认页大小是 “4KB”?
- Swift Module Interfaces