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命令组成,通过将 ...
随机推荐
- 第一个Three.js程序——动手写一个简单的场景
三维场景基本要素: 步骤: 代码: 源码: <!DOCTYPE html> <html lang="en"> <head> <meta c ...
- C# 数组之List<T>
一.引言 List<T>是ArrayList的泛型等效类,底层数据结构也是数组. 相比Array而言,可以动态的拓展数组长度.增删数据 相比ArrayList而言,由于声明的时候就已经规定 ...
- Ionic中基于js的扩展(指令和服务)来实现各种效果
1.ion-header-bar ion-footer-bar ion-content align-title='left/ritght/center <body> <ion-hea ...
- js和jq中常见的各种位置距离之offsetLeft和position().left的区别(四)
offsetLeft:元素的边框的外边缘距离与已定位的父容器(offsetparent)的左边距离(不包括元素的边框和父容器的边框).position().left:使用position().left ...
- AtCoder Regular Contest 075 2017年6月4日 C、D、E题解
http://arc075.contest.atcoder.jp/assignments 昨晚做的atcoder,今天写个简单题解. F题不会做,800point的,就跪了,要等zk大佬来做.zk能做 ...
- hadoop集群启动时DataNode节点启动失败
错误日志如下: ************************************************************/ 2018-03-07 18:57:35,121 INFO o ...
- (转)C#抽象类和接口对比
c#中抽象类(abstract)和接口(interface)的相同点与区别 转自:http://blog.csdn.net/fxh_hua/archive/2009/08/20/4464739.as ...
- AJPFX关于Java中的集合
ava API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下: Collection<--List<--Vector Collection<--List& ...
- ribbon重试机制
我们使用Spring Cloud Ribbon实现客户端负载均衡的时候,通常都会利用@LoadBalanced来让RestTemplate具备客户端负载功能,从而实现面向服务名的接口访问. 下面的例子 ...
- linux配置tomcat已service方式启动
1. 在/etc/init.d目录下新建文件,命名为tomcat2. 对tomcat文件进行编辑,执行 # cd /etc/init.d/ # vi tomcat 将下面代码粘上去 注意:下面代码ja ...