什么是 Shell 脚本?

一个 shell 脚本就是一个包含一系列命令的文件。shell 读取这个文件,然后执行 文件中的所有命令,就好像这些命令已经直接被输入到了命令行中一样。

怎样编写一个 Shell 脚本

为了成功地创建和运行一个 shell 脚本,我们需要做三件事情:

  1. 编写一个脚本。 Shell 脚本就是普通的文本文件。所以我们需要一个文本编辑器来书写它们。最好的文本 编辑器都会支持语法高亮,这样我们就能够看到一个脚本关键字的彩色编码视图。语法高亮会帮助我们查看某种常见 错误。为了编写脚本文件,vim,gedit,kate,和许多其它编辑器都是不错的候选者。
  2. 使脚本文件可执行。 系统会相当挑剔不允许任何旧的文本文件被看作是一个程序,并且有充分的理由! 所以我们需要设置脚本文件的权限来允许其可执行。
  3. 把脚本放置到 shell 能够找到的地方 当没有指定可执行文件明确的路径名时,shell 会自动地搜索某些目录, 来查找此可执行文件。为了最大程度的方便,我们会把脚本放到这些目录当中。

脚本文件格式

为了保持编程传统,我们将创建一个 “hello world” 程序来说明一个极端简单的脚本。

所以让我们启动 我们的文本编辑器,然后输入以下脚本并保存名为 hellow

#!/bin/bash
# This is our first script.
echo 'Hello World!'
num=2
echo “this is the ${num}nd”

1 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。

2 # 注释

3 echo 向屏幕输出一句话

4 定义变量为 2

5 输出变量num

类似于许多命令,这也在命令行中起作用:

dongdong@dongdong:~/桌面$ echo 'Hello World!' # This is a comment too
Hello World!
dongdong@dongdong:~/桌面$ Hello World!

可执行权限

下一步我们要做的事情是让我们的脚本可执行。使用 chmod 命令,这很容易做到:

dongdong@dongdong:~/桌面$ chmod 755 hellow

对于脚本文件,有两个常见的权限设置;权限为755的脚本,则每个人都能执行,和权限为700的 脚本,只有文件所有者能够执行。注意为了能够执行脚本,脚本必须是可读的。

脚本文件位置

设置权限后执行脚本

dongdong@dongdong:~/桌面$ ./hellow
Hello World!

为了能够运行此脚本,我们必须指定脚本文件明确的路径。如果我们没有那样做,我们会得到这样的提示:

bash: hello_world: command not found

PATH 环境变量及其它在系统 查找可执行程序方面的作用。

回顾一下,如果没有给出可执行程序的明确路径名,那么系统每次都会 搜索一系列的目录,来查找此可执行程序。这个/bin 目录就是其中一个系统会自动搜索的目录。 这个目录列表被存储在一个名为 PATH 的环境变量中。这个 PATH 变量包含一个由冒号分隔开的目录列表。 我们可以查看 PATH 的内容:

dongdong@dongdong:~/桌面$ echo $PATH
/opt/ros/indigo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

如何添加新的地址

echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

编写第一个 Shell 脚本的更多相关文章

  1. 编写第一个Shell脚本【TLCL】

    怎样编写一个 Shell 脚本 编写一个脚本 使脚本文件可执行 把脚本放到Shell能够找到的地方 脚本文件格式 #!/bin/bash # This is our first script. ech ...

  2. 编写第一个Shell脚本

    Linux中有好多中不同的shell,bash是linux默认的shell,免费且容易使用. su切换为root权限 1.创建shell脚本 touch hello.sh 2.编辑: vi hello ...

  3. shell脚本中执行另一个shell脚本

    分类: 可以在一个shell脚本中执行另一个shell脚本(或非可执行文件,主要用于取得一些变量的值),方法是: . 文件名(包括路径) 或 变量=文件名(包括路径) . $变量   注意,圆点后面有 ...

  4. Shell教程 之第一个shell脚本

    1.第一个shell脚本 打开文本编辑器(可以使用 vi/vim 命令来创建文件),新建一个文件 test.sh,扩展名为 sh(sh代表shell),扩展名并不影响脚本执行 输入一些代码 #!/bi ...

  5. 向大家分享一个shell脚本的坑

    打算在跳板机上写一个shell脚本,批量检查远程服务器上的main进程是否在健康运行中. 先找出其中一台远程机器,查看main进程运行情况 [root@two002 tmp]# ps -ef|grep ...

  6. Linux Shell系列教程之(二)第一个Shell脚本

    本文是Linux Shell系列教程的第(二)篇,更多shell教程请看:Linux Shell系列教程 通过上一篇教程的学习,相信大家已经能够对shell建立起一个大体的印象了,接下来,我们通过一个 ...

  7. 1.编写一个shell脚本

    一.shell和shell脚本 在linux系统下,以 #/bin/bash开头的文本会被shell解释器进行解释.   shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操 ...

  8. 每秒执行一个shell脚本(转载)

      上周迁移了一台服务器,发现其中一个项目的数据没有更新,查询原服务器的数据,数据有更新,并找到了rsync服务,从其他服务器传输数据,那么如何找到这台服务器?因为是从远程传输到本地,而且不是很频繁, ...

  9. 【Shell 编程基础第一部分】第一个Shell脚本HelloShell及一些简单的Shell基础书写与概念;

    http://blog.csdn.net/xiaominghimi/article/details/7603000 本站文章均为李华明Himi原创,转载务必在明显处注明:转载自[黑米GameDev街区 ...

随机推荐

  1. node(http, url)

    一.http 模块 http.js const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; con ...

  2. HTML float 和 absolute

    block元素和inline元素在文档流中的排列方式: block元素通常被现实为独立的一块,独占一行,多个block元素会各自新起一行,默认block元素宽度自动填满其父元素宽度.block元素可以 ...

  3. wamp本地可以访问,远程无法访问,报错:client denied by server configuration

    出错原因:配置文件限制非本机访问 对策:修改httpd.conf,选择合适的模式,一般局域网环境的话,可以完全放开,使用 <Directory "..../wamp/www" ...

  4. 广州地区.net相关活动的文章

    此文正在更新中... 复活广州.net俱乐部 office365的开发者训练营,免费,在微软广州举办 被低估的.net(上) - 微软MonkeyFest 2018广州分享会活动回顾

  5. docker研究-2

    容器和虚拟机都是一种虚拟化技术,两者的主要区别: 虚拟机占用资源多,启动慢,荣誉步骤多:而容器启动快,占用资源少,体积小.Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口.它 ...

  6. verilog实现红黄蓝三秒灯

    代码如下 test.v文件 led.v文件 module test(); wire led_r,led_g,led_b; ; clk <= ~clk; led c1 ( .clk(clk), . ...

  7. servlet请求和响应的过程

    1.加载 Servlet类被加载到Java虚拟机中,并且实例化.在这个过程中,web容器(例如tomcat)会调用Servlet类的公开无参构造函数,产生一个Servlet类的实例对象.默认情况下Se ...

  8. Sql Server XML

    实验数据: Create table xmldata (name NVARCHAR(20), age int, sex NVARCHAR(5) ) INSERT INTO xmldata VALUES ...

  9. c/c++ 数组 数组的引用,指针数组的引用

    c/c++ 数组 知识点 1,数组的声明和初始化,对应代码里的test1和test2 2,char数组,对应代码里的test3 3,数组不可以拷贝和复制,对应代码里的test4 4,指针数组, 数组的 ...

  10. Spring Cloud Config 配置属性覆盖优先级。

    /** * Flag to indicate that the external properties should override system properties. * Default tru ...