13Shell脚本—编写简单脚本
1. 概述
Shell脚本命令的工作方式有两种:交互式和批处理。
交互式(Interrctive): 用户每输入一条命令就立即执行。
批处理(Batch): 由用户事先编写好一个完整的 Shell 脚本, Shell 会一次性执行脚本中诸多的命令。
Shell脚本文件的名称可以任意。但为了避免被误以为是普通文件,建议将 .sh 后缀加上,以表示是一个脚本文件。
2. 第一个简单的shell脚本
[root@rockman 0614]# vi example.sh
#!/bin/bash
#For example by rock
pwd
ls -l
#第一种执行方法 bash 脚本文件名及其参数 或者 sh 脚本文件名及其参数
[root@rockman 0614]# bash example.sh
/home/hk/0614
total 20
-rw-r--r--. 1 root root 65 Jun 14 17:32 aaa.txt
-rw-r--r--. 1 root root 0 Jun 14 16:17 abc.txt
-rw-r--r--. 1 root root 0 Jun 14 16:23 bbb.txt
-rw-r--r--. 1 root root 0 Jun 14 16:27 ccc.txt
-rw-r--r--. 1 root root 43 Jun 14 17:51 example.sh
-rw-rw-r--. 1 hk hk 4731 Jun 14 09:10 openman.txt
-rw-rw-r--. 1 hk hk 22 Jun 14 09:11 practice.txt
#第二种执行方法 先让Shell文件权限加上可执行,然后直接运行
[root@rockman 0614]# chmod u+x example.sh
[root@rockman 0614]# ./example.sh
/home/hk/0614
total 20
-rw-r--r--. 1 root root 65 Jun 14 17:32 aaa.txt
-rw-r--r--. 1 root root 0 Jun 14 16:17 abc.txt
-rw-r--r--. 1 root root 0 Jun 14 16:23 bbb.txt
-rw-r--r--. 1 root root 0 Jun 14 16:27 ccc.txt
-rwxr--r--. 1 root root 43 Jun 14 17:51 example.sh
-rw-rw-r--. 1 hk hk 4731 Jun 14 09:10 openman.txt
-rw-rw-r--. 1 hk hk 22 Jun 14 09:11 practice.txt
#第三种方法 source 脚本文件名及其参数 或者 . 脚本文件名及其参数
[root@rockman 0614]# source example.sh
/home/hk/0614
total 20
-rw-r--r--. 1 root root 65 Jun 14 17:32 aaa.txt
-rw-r--r--. 1 root root 0 Jun 14 16:17 abc.txt
-rw-r--r--. 1 root root 0 Jun 14 16:23 bbb.txt
-rw-r--r--. 1 root root 0 Jun 14 16:27 ccc.txt
-rw-r--r--. 1 root root 43 Jun 14 17:51 example.sh
-rw-rw-r--. 1 hk hk 4731 Jun 14 09:10 openman.txt
-rw-rw-r--. 1 hk hk 22 Jun 14 09:11 practice.txt
3. 可以接受用户参数的脚本文件
Shell内置可用于接受参数的变量,变量之间可以使用空格间隔。
$0 当前shell脚本程序的名称
$# 总共有几个参数
$* 所有位置的参数值
$? 显示上一次命令执行的返回值
$1 第一个位置的参数值
$N 第N个位置的参数值
[root@rockman 0615]# cat example.sh
#!/bin/bash
echo "当前脚本名称为$0"
echo "总共有$#个参数,分别是$*。"
echo "第1个参数为$1, 第二个参数为$2。"
[root@rockman 0615]# sh example.sh one two three four five six
当前脚本名称为example.sh
总共有6个参数,分别是one two three four five six。
第1个参数为one, 第二个参数为two。
13Shell脚本—编写简单脚本的更多相关文章
- 编写SHELL脚本--编写简单脚本
1.简单脚本文件hello.sh,内容如下 #!/bin/bash pwd ls -al 执行脚本:bash hello.sh 或者使用root命令: ./hello.sh 2.接受用户参数 $0 ...
- SecureCRT自动登陆到服务器的脚本以及脚本编写简单说明
http://blog.csdn.net/marising/article/details/6409196 Secure用SSH登陆服务器时,如果服务器较多,登陆一次很麻烦,所以,可以自己编写VBSc ...
- 学习 Linux,101: 自定义或编写简单脚本【转】
转自:http://www.ibm.com/developerworks/cn/linux/l-lpic1-105-2/index.html 学习如何使用标准的 shell 语法.循环和控制结构,以及 ...
- shell编程之服务脚本编写,文件锁以及信号捕获
shell脚本编程是linux运维工程师必备的技能,也是非常重要的一个技能,所以把shell编程学好,只有好处.基础语法我也就不讲了,学过C语言这些语言的,稍微看一下就能明白shell编程的基础,所以 ...
- 编写简单的辅助脚本来在 Google 表格上记账
我的第二份工作入职在即,而这一次则真的是完全跑到了一个陌生的城市了.租房,购置相关用品,还尚未工作钱就花掉一堆.尽管我个人之前一直都没有过记账的习惯,但为了让自己能够搞清楚自己的钱都花在哪里了,于是还 ...
- python模块之sys和subprocess以及编写简单的主机扫描脚本
python模块之sys和subprocess以及编写简单的主机扫描脚本 1.sys模块 sys.exit(n) 作用:执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.e ...
- BAT脚本编写教程简单入门篇
BAT脚本编写教程简单入门篇 批处理文件最常用的几个命令: echo表示显示此命令后的字符 echo on 表示在此语句后所有运行的命令都显示命令行本身 echo off 表示在此语句后所有运行的命 ...
- ROS Learning-010 beginner_Tutorials 编写简单的启动脚本文件(.launch 文件)
ROS Indigo beginner_Tutorials-09 编写简单的启动脚本文件 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.0 ...
- 小鸟初学Shell编程(二)编写简单的Shell脚本
Shell脚本 编写Python.PHP脚本通常需要掌握语言的函数,那么Shell脚本则不需要,只需要掌握Linux命令就可以编写Shell脚本,因为Shell脚本就是由多个Linux命令组成,通过将 ...
随机推荐
- 黑马旅游网 解析url查询字符串
function getUrlParam(name) { let reg = new RegExp("(^|&)" + name + "=([^&]*)( ...
- Swing 100行画图示例
关键内容,可以自行扩展 package main; import java.awt.BasicStroke; import java.awt.BorderLayout; import java.awt ...
- Ubuntu 16.04 LTS安装Docker
一.安装Docker的先决条件 1.运行64位CPU构架的计算机(目前只能是x86_64和amd64),请注意,Docker目前不支持32位CPU.2.运行Linux 3.8或更高版本内核.一些老版本 ...
- 056 Merge Intervals 合并区间
给出一个区间的集合, 请合并所有重叠的区间.示例:给出 [1,3],[2,6],[8,10],[15,18],返回 [1,6],[8,10],[15,18].详见:https://leetcode.c ...
- 《深入理解java虚拟机》笔记(4)对象已死吗
一.垃圾回收器回收的对象 虚拟机内存区域中程序计数器.虚拟机栈.本地方法栈随线程而生,随线程而灭.这3个区域内存分配和回收都具备确定性.因此不需要过多考虑回收问题. 而Java堆和方法区不一样,这部分 ...
- java lombok包在maven已经配置,但是注解没用
如果你是用eclipse作为开发环境,配置了maven依赖以后,还需要在eclipse/myeclipse中手动安装lombok. 其实就是加一个jar包,添加2行代码 1. 将 lombok.jar ...
- Linq 根据list属性去重复
s.Where((x, i) => s.FindIndex(z => z.ArticleTitle == x.ArticleTitle) == i).ToList();
- 构造方法,this,super,final,static
1构造方法 一个Person类,属性都被private了,外界无法直接访问属性,必须对外提供相应的set和get方法.但如果需要在创建对象的同时明确对象的属性值,就需要构造方法了. 1.1定义 构建创 ...
- 1044 拦截导弹 1999年NOIP全国联赛提高组 个人博客:attack.cf
1044 拦截导弹 1999年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 某国为了防御敌 ...
- 使用OpenSSH远程管理Linux服务器
一.使用OpenSSH远程管理Linux服务器 sshd是OpenSSH的服务器端守护进程,与之对应的Windows下客户端软件有SecureCRT/Xshell/PuTTY等. OpenSSH一般为 ...